python понимание списка не работает с list.extend - PullRequest
0 голосов
/ 30 марта 2020

У меня есть список шаблонов глобуса. Для каждого шаблона глобуса я получаю соответствующий список файлов, и я хочу объединить все списки файлов с пониманием списка, чтобы они были один плоский список :

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]

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Нет проблем с методом расширения.

Ваш синтаксис неверен. Вы должны написать это так: -

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']
0 голосов
/ 30 марта 2020

Это просто недопустимый синтаксис, all_files.extend(glob.glob(pattern)) for pattern in patterns выглядит как синтаксис для понимания списка , который вы здесь не пытаетесь выполнить.

...