【发布时间】:2010-11-01 21:21:46
【问题描述】:
我有一个对象列表,我想对它们进行随机播放。我以为我可以使用 random.shuffle 方法,但是当列表是对象时,这似乎失败了。有没有洗牌对象的方法或其他解决方法?
import random
class A:
foo = "bar"
a1 = a()
a2 = a()
b = [a1, a2]
print(random.shuffle(b))
这将失败。
【问题讨论】:
-
你能举例说明它是如何失败的吗? random.shuffle 应该不受列表中对象类型的影响。
-
>>> a1 = a() >>> a2 = a() >>> b = [a1,a2] >>> b [<__main__.a instance at>, <__main__ .a instance at>] >>> print random.shuffle(b) None
-
如下所述,random.shuffle 不会返回新的打乱列表;它会随机播放列表。所以你不应该说“print random.shuffle(b)”,而应该在一行上做 shuffle,在下一行打印 b。
-
如果您尝试对 numpy 数组进行洗牌,请参阅下面的答案。
-
是否有一个选项不会改变原始数组但返回一个新的洗牌数组?
标签: python list random shuffle