我是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”循环忽略了?
答案 0 :(得分:10)
循环浏览列表时,无法从列表中删除元素。尝试并遍历列表的副本,或者创建一个只包含要保留的元素的新副本。
答案 1 :(得分:5)
尝试列表理解。这会保留您的files
列表,并在不触及noTxtFiles
的情况下创建新列表files
。
files = os.listdir(os.getcwd())
noTxtFiles = [ element for element in files if 'txt' not in element ]
不要将保留字list
用作变量名。