Spojování seznamu seznamů
Opět chvilka jednoduchého Pythonu.
Kdesi v programu se nám vyskytne seznam seznamů:
l = [['seznam', 'ruznych'], ['ruzne', 'dlouhych'], ['seznamu']]
Nejjednodušší možnost je „rozepsat se“:
new_list = []
for li in l:
for i in l:
new_list.append(i)To je ovšem roztahané, se dvěma cykly a vůbec nepěkné. Existuje přitom jednoduchá a čitelná alternativa s využitím modulu itertools:
from itertools import chain new_list = list(chain(*l))
Pár poznámek:
- chain() vrací instanci objektu, pokud chceme přímo seznam, musíme obalit list()em. To není třeba pokud nám stačí iterable.
- * „rozkládá“ seznam na položky, podobně jako u *args. Nesmí se proto na něj zapomenout, list(chain(l)) == l
Published on March 29, 2010 under česky python snippet začátečníci
© 2010 Almad, Web design WebJapan. Content published under CC by-nc-sa