Python列表工作不正常

2024-04-27 03:21:09 发布

您现在位置:Python中文网/ 问答频道 /正文

import random

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

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

为什么上面的代码只打印出3个单词而不是全部5个单词?我是否试图以错误的方式以随机顺序打印来自words的单词?你知道吗


Tags: inimportforrandom单词removewordwords
3条回答

人们大多解释了为什么你没有得到你想要的行为,而只是用一个不同的习惯用法把另一个解决方案扔到混合中:

import random
words = ["Football" , "Happy" ,"Sad", "Love", "Human"]
random.shuffle(words)
while words:
    print(words.pop())

在对列表进行迭代时,不能修改列表(通过添加或删除元素),因为行为未定义。这里有一个可能的替代方案,你正在做的事情没有这个问题:

random.shuffle(words)
for word in words:
    print(word)

这是因为你没有正确循环。试试这个:

import random

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

while words:
    word = random.choice(words)
    print(word)
    words.remove(word)

您需要确保列表words不是空的,因为您不能在迭代数组时修改它。你知道吗

相关问题 更多 >