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