2

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

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

我尝试了各种方法来随机打印它们,例如制作一个仅随机选择其中一个的变量,然后随机删除它们。然后我会重复这个步骤,直到它们都被删除并在另一个变量中。然后我将变量放在一个列表中,然后将它们打印出来。但是,这继续产生错误。有没有另一种方法可以做到这一点?

4

4 回答 4

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']
于 2013-07-26T12:04:24.583 回答
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=" ")
于 2013-07-26T12:05:55.413 回答
0
import random
random.choice([1,2,3])
#random element from the iterable 

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

于 2013-07-26T12:04:49.433 回答
-1

如果你真的想要,你可以random.randint用来选择一个随机整数,然后打印与该整数对应的单词。

于 2018-11-13T16:33:37.607 回答