如何在python中以随机顺序从列表中选择条目

时间:2016-08-10 18:57:08

标签: python list

问题很简单。我有一个说10个条目的列表,我正在运行循环。我想要的是每个条目只需一次,但是按随机顺序。

最好和最pythonic的方法是什么?

6 个答案:

答案 0 :(得分:5)

您可以使用random.sample,它会返回防止重复的随机元素:

>>> import random
>>> data = range(10)
>>> print(random.sample(data, len(data)))
[2, 4, 8, 7, 0, 5, 6, 3, 1, 9]

原始列表保持不变。

答案 1 :(得分:4)

您可以使用random.shuffle

In [1]: import random

In [3]: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [4]: random.shuffle(a)

In [5]: a
Out[5]: [3, 6, 9, 1, 8, 0, 4, 7, 5, 2]

答案 2 :(得分:0)

首先导入random模块并使用shuffle功能随机播放列表:

import random
x = ... # A list
random.shuffle(x)

然后遍历您的列表。请注意,shuffle会改变原始列表,并且不会返回随机版本。

答案 3 :(得分:0)

您可以使用random.shuffle()

import random

original = range(10)
# Make a copy of the original list, as shuffling will be in-place
shuffled = list(original)
random.shuffle(shuffled)

Jean-FrançoisFabre的有效评论:如果您使用original变量并将其直接传递给random.shuffle,Python会返回错误,并将'range' object does not support item assignment作为{{} 1}}返回一个生成器。

要解决此问题,只需将作业替换为range

答案 4 :(得分:0)

你可以使用shuffle:

import random

random.shuffle(yourlist)

# loop as you would normally
for item in yourlist:
.....

答案 5 :(得分:-2)

import random
s=set(range(10))

while len(s)>0:
  s.remove(random.choice(yourlist(s)))
  print(s)