Mozna jeste uzitecnejsi nez na velkych seznamech jsou strucne generatory na iteratorech, co generuji svoje prvky za behu (typicky generatory).
Uvazte priklad:
lines = (line for line in file if line[0]!="#")
Soubor muze mit klidne 2 GB radku nezacinajicich # a kdyz se lines posle treba nejake funkci ke zpracovani, tak to bude fungovat. Kdyby tam byly hranate zavorky, tak se to ony 2 GB bude snazit naladovat do pameti a pravdepodobne skonci neuspechem.
Stejneho efektu lze ve starsich kobrach (ci v cem? :-)) dosahnout jen vytvorenim celeho generatoru:
def good_lines(f):
__for line in f:
____if line[0]!="#": yield line
...
lines = good_lines(file)
Myslim, ze strucne generatory jsou o neco prehlednejsi.
(ty _ jsou tam misto mezer kvuli odsazeni)