хлопці. Я намагаюся знайти найелегантніше рішення проблеми і замислювався, чи 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 дає мені список зі списків, але я дуже хочу список.