为什么忽略这个python列表的某些元素?

时间:2010-10-26 12:42:42

标签: python

我是Python新手,我很难理解这个简单程序的输出:

list = os.listdir(os.getcwd())
print(list)
print()
for element in list:
    print(element)
    if 'txt' not in element: list.remove(element)

这给了我这个输出:

['examples_list.txt', 'generate_patterns.py', 'lehoczky_example_3.txt', 'patterns', 'test.py', 'test2.py']

examples_list.txt
generate_patterns.py
patterns
test2.py

为什么某些元素(例如'lehoczky_example_3.txt')被“for”循环忽略了?

2 个答案:

答案 0 :(得分:10)

循环浏览列表时,无法从列表中删除元素。尝试并遍历列表的副本,或者创建一个只包含要保留的元素的新副本。

另见Python strange behavior in for loop or lists

答案 1 :(得分:5)

尝试列表理解。这会保留您的files列表,并在不触及noTxtFiles的情况下创建新列表files

files = os.listdir(os.getcwd())
noTxtFiles = [ element for element in files if 'txt' not in element ]

不要将保留字list用作变量名。