给定一个列表 x = [1,0,0,1,1]
我可以重复使用 random.shuffle(x)
来打乱这个列表,但是如果我尝试在 for 循环中执行此操作,列表不会随机播放。
例如:
x = [1,0,0,1,1]
k = []
for i in range(10):
random.shuffle(x)
k.append(x)
return x
基本上,k
包含相同的 x 未洗牌序列?有解决办法吗?
最佳答案
创建新的列表随机排序的一种 pythonic 方法是根本不在适当的位置洗牌。这是一种实现:
[random.sample(x, len(x)) for _ in range(10)]
解释
random.sample
创建一个新列表,而不是就地洗牌。len(x)
是样本的大小。在这种情况下,我们希望输出与原始列表长度相同的列表。- 列表理解通常被认为是 pythonic 与显式 for 循环。
关于python - 如何遍历范围并在 Python 中随机打乱列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49039985/