import random
words = ["Football" , "Happy" ,"Sad", "Love", "Human"]
for word in words:
word = random.choice(words)
print(word)
words.remove(word)
为什么上面的代码只打印出3个单词而不是全部5个单词?我是否试图以不正确的方式以随机顺序打印words
中的单词?
答案 0 :(得分:6)
在迭代它时,您无法修改列表(通过添加或删除元素),行为未定义。对于没有这个问题的你正在做的事情,这是一个可能的替代方案:
random.shuffle(words)
for word in words:
print(word)
答案 1 :(得分:3)
这是因为您没有正确循环。试试这个:
import random
words = ["Football" , "Happy" ,"Sad", "Love", "Human"]
while words:
word = random.choice(words)
print(word)
words.remove(word)
您需要确保列表words
不为空,因为您无法在迭代时修改数组。
答案 2 :(得分:1)
人们大多解释了为什么你没有得到你想要的行为,而只是使用不同的习语将混合解决方案投入到混合中:
import random
words = ["Football" , "Happy" ,"Sad", "Love", "Human"]
random.shuffle(words)
while words:
print(words.pop())
答案 3 :(得分:0)
在迭代时不应修改列表尝试
for _ in range(len(words)):
word = random.choice(words)
words.remove(word)
print word
答案 4 :(得分:0)
明确说明博客建议,
>>>import random
>>>random.shuffle(words)
>>>print(*words)