簡體   English   中英

python 列表理解不適用於 list.extend

[英]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']

這只是無效的語法, all_files.extend(glob.glob(pattern)) for pattern in patterns看起來像列表理解語法,你不想在這里執行。

暫無
暫無

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

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