ребята. Я пытаюсь найти самое элегантное решение проблемы и задаюсь вопросом, есть ли у python что-то встроенное для того, что я пытаюсь сделать.
Что я делаю, так это. У меня есть список A
, и у меня есть функция f
, которая берет элемент и возвращает список. Я могу использовать понимание списка, чтобы преобразовать все в A
так:
[f(a) for a in A]
Но это возвращает список списков,
[a1,a2,a3] => [[b11,b12],[b21,b22],[b31,b32]]
Я действительно хочу получить сплющенный список,
[b11,b12,b21,b22,b31,b32]
Теперь, на других языках; он традиционно называется flatmap
в языках функционального программирования, а .Net называет его SelectMany
. У python есть что-то подобное? Есть ли опрятный способ сопоставить функцию над списком и сгладить результат?
Фактическая проблема, которую я пытаюсь решить, заключается в следующем; начиная со списка каталогов, найдите все подкаталоги. так;
import os
dirs = ["c:\\usr", "c:\\temp"]
subs = [os.listdir(d) for d in dirs]
print subs
currentliy дает мне список списков, но мне действительно нужен список.