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

Jua*_*vas 2 python

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

list = os.listdir(os.getcwd())
print(list)
print()
for element in list:
    print(element)
    if 'txt' not in element: list.remove(element)
Run Code Online (Sandbox Code Playgroud)

这给了我这个输出:

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

examples_list.txt
generate_patterns.py
patterns
test2.py
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ani 10

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

另请参阅for循环或列表中的Python奇怪行为


eum*_*iro 5

尝试列表理解.这将保留您的列表files并创建一个新列表,noTxtFiles而无需触及files.

files = os.listdir(os.getcwd())
noTxtFiles = [ element for element in files if 'txt' not in element ]
Run Code Online (Sandbox Code Playgroud)

并且不要将保留字list用于变量名.