在Python中无法从random.shuffle获得结果

4

我以前从未遇到过这个问题,但当我尝试对列表进行洗牌时,返回了“None”。

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

打印语句返回“None”,我不知道为什么,我已经寻找了答案解决这个问题,但貌似没有合适的答案。希望我没有犯什么低级错误。

4个回答

10
< p > random.shuffle 函数是原地排序列表的,为了避免引起混淆,它不会返回已洗牌的列表。只需尝试:

 random.shuffle(c)
 print(c)

我认为这是一个很好的API设计 - 这意味着如果你误解了random.shuffle正在做的事情,那么你将立即遇到明显的问题,而不是一个更微妙的难以追踪的bug...


3

请记住,random.shuffle()是就地打乱列表的。因此它会更新名为“c”的对象。但是当你用函数的输出None重新绑定“c”时,列表就丢失了。


1

来自文档

就地打乱序列 x。

因此

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

正常工作。


0

尝试这样做

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接