python - 如何遍历范围并在 Python 中随机打乱列表?

标签 python python-3.x python-2.7 list

给定一个列表 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/

相关文章:

python - 为什么 GAE python SDK 在 vi​​rtualenv 中使用系统的 python?

python - 如何获取子进程的 stderr 流输出的最后 N 行?

python - 使用 QPolygonF 绘图时如何在 QGraphicsPolygonItem 内添加文本?

python - 我在numpy中实现的多 channel 一维卷积有什么问题(与tensorflow相比)

python - 使用 Python 3 将一个文件的内容复制到另一个文件中

linux - 无法在 ubuntu 中设置 virtualenv

python - 写入 wav 文件会发出咔嗒声

python - "not in"身份运算符在检查某些字符的空字符串时不起作用

python-3.x - 共享点文件夹应用程序权限 - 未经授权

python - Tensorflow FailedPreconditionError,但所有变量都已初始化