无法从 Python 的 random.shuffle 中得到结果

4 投票
4 回答
2346 浏览
提问于 2025-04-16 13:05

我之前从来没有遇到过这个问题,但当我尝试打乱一个列表时,返回的却是'None'。

import random
c=[1,4,67,3]
c=random.shuffle(c)
print c

打印出来的结果是'None',我不知道为什么。我到处找过这个问题的答案,但似乎没有找到任何信息。我希望我不是在犯明显的错误。

4 个回答

1

来自文档

在原地打乱序列x。

所以

import random
c=[1,4,67,3]
random.shuffle(c)
print c

按预期工作。

3

记住,random.shuffle() 是直接在原来的列表上进行打乱的。所以它会更新名为“c”的这个对象。但是接着你把“c”重新赋值为 None,也就是函数的返回值,这样原来的列表就没了。

10

random.shuffle这个函数会直接在原来的列表上进行排序,也就是说它不会返回一个新的打乱后的列表,这样可以避免让人困惑。你可以直接试试:

 random.shuffle(c)
 print(c)

我觉得这是一个很不错的设计方式——这意味着如果你误解了random.shuffle的功能,你会立刻遇到明显的问题,而不是后面出现一个难以发现的小错误...

撰写回答