Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python列表不能正常工作_Python_List - Fatal编程技术网

Python列表不能正常工作

Python列表不能正常工作,python,list,Python,List,为什么上面的代码只打印出3个单词而不是全部5个单词?我是否试图以不正确的方式以随机顺序打印单词中的单词?在对列表进行迭代时,无法修改列表(通过添加或删除元素),行为未定义。这里有一个可能的替代方案,可以解决你正在做的事情没有这个问题: import random words = ["Football" , "Happy" ,"Sad", "Love", "Human"] for word in words: word = random.choice(words) print(

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

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

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())