如何在python中随机打印列表中的元素?

时间:2013-07-26 12:02:44

标签: python python-3.x random

我有一个列表,我想以随机顺序打印。这是我到目前为止编写的代码:

import random
words=["python","java","constant","immutable"]
for i in words:
    print(i, end=" ")
input("") #stops window closing

我已经尝试过各种各样的东西来随机打印出来,例如制作一个随机选择其中一个然后随机删除的变量。然后,我将重复此步骤,直到它们全部被删除并在另一个变量中。然后我将变量放在一个列表中然后打印出来。但这仍然会产生错误。还有其他方法可以做到吗?

4 个答案:

答案 0 :(得分:3)

使用random.shuffle()随机播放列表:

import random

words = ["python", "java", "constant", "immutable"]
random.shuffle(words)
print(*words)

input('')

演示:

>>> import random
>>> words = ["python", "java", "constant", "immutable"]
>>> random.shuffle(words)
>>> words
['python', 'java', 'constant', 'immutable']

如果您想保留words(维护订单),可以使用随机键sorted()返回新的随机列表:

words = ["python", "java", "constant", "immutable"]
print(*sorted(words, key=lambda k: random.random()))

这使words保持不变:

>>> words = ["python", "java", "constant", "immutable"]
>>> sorted(words, key=lambda k: random.random())
['immutable', 'java', 'constant', 'python']
>>> words
['python', 'java', 'constant', 'immutable']

答案 1 :(得分:1)

试试这个:

import random
words2 = words[::]
random.shuffle(words2)
for w in words2:
    print(w, end=" ")

请注意,我首先复制了原始列表,以防您想要保留它。如果你不介意改组它,这应该可以解决问题:

import random
random.shuffle(words)
for w in words:
    print(w, end=" ")

答案 2 :(得分:0)

import random
random.choice([1,2,3])
#random element from the iterable 

希望它有所帮助,random.choice()从列表中返回随机选择的元素。

答案 3 :(得分:-1)

如果确实愿意,可以使用random.randint选择一个随机整数,然后打印与该整数对应的单词。