[英]python list comprehension does not work with list.extend
我有一個 glob 模式列表。 對於每個 glob 模式,我得到匹配的文件列表,並且我想將所有文件列表與列表理解結合起來成為一個扁平列表:
patterns = [
"some_pattern1",
"some_pattern2"
]
all_files = []
all_files.extend(glob.glob(pattern)) for pattern in patterns
但是,這給了我一個語法錯誤,我可以將列表合並為:
for pattern in patterns:
all_files.extend(glob.glob(pattern))
我認為這兩種語法是等效的。 為什么列表理解不適用於擴展?
例如,考慮some_pattern1
匹配兩個文件[1.txt, 2.txt]
; some_patter2
匹配[3.txt, 4.txt]
,我正在尋找一種將兩個列表組合在一起的方法: [1.txt, 2.txt, 3.txt, 4.txt]
擴展方法沒有問題。
你的語法是錯誤的。 你應該這樣寫:-
patterns = [
"some_pattern1",
"some_pattern2"
]
all_files = []
all_files.extend([glob.glob(pattern) for pattern in patterns])
它會返回這樣的輸出:-
[['1.txt', '2.txt'], ['3.txt', '4.txt']]
將此添加到代碼中:
sum(all_files, [])
現在輸出將是這樣的:-
['1.txt', '2.txt', '3.txt', '4.txt']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.