Python列表无法正常工作

时间:2014-03-04 00:15:48

标签: python list

import random

words = ["Football" , "Happy" ,"Sad", "Love", "Human"]

for word in words:
    word = random.choice(words)
    print(word)
    words.remove(word)

为什么上面的代码只打印出3个单词而不是全部5个单词?我是否试图以不正确的方式以随机顺序打印words中的单词?

5 个答案:

答案 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)