簡體   English   中英

為什么忽略這個python列表的某些元素?

[英]Why are certain elements of this python list ignored?

我是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”循環忽略了?

循環瀏覽時,您無法從列表中刪除元素。 嘗試並循環遍歷列表的副本,或者創建一個僅包含要保留的元素的新副本。

另請參閱for循環或列表中的Python奇怪行為

嘗試列表理解。 這將保留您的files列表並創建新列表noTxtFiles而不觸及files

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

並且不要將保留字list用於變量名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM