> OK, asi jsem ovlivněn C++ terminologií z STL. Tam je list struktura, > která umožňuje rychlé vkládání a přidávání prvků a jako doplněk má možnost > adresace indexem. > Jako pole mi přijde spíš tuple.
Jenže Python je takové zmatení jazyků. Cyklus for v Pythonu je cyklus foreach, list je vlastně pole, atd.. > Aby vkládání do prostředka seznamu nebylo pomalé (nemusely se přesouvat > velké bloky dat) > asi bych to řešil jako seznam nebo strom polí. V případě potřeby vkládání > doprostřed > pole se pole rozpadne na dvě části. Naopak při velké fragmentaci se spustí > defragmentační proces, který malá sousedící pole sloučí. Vzhledem k tomu, že to pole udržuje jenom pointery na prvky, tak je i vkládání do pole extrémně rychlé. Rozhodně je to rychlejší operace, než udržování x fragmentovaných bloků a udržovat operace nad nimi. Ono jde o to, že si můžete vybrat - některé operace pomalejší a některé rychlejší. Souvislý seznam má extrémně rychlé append, přístup přes indexy, čtení a zápis prvku. Zase pomalejší vkládání doprostřed seznamu. Pokud by pole bylo na více bloků, pak je pomalý přístup přes indexy, pomalý zápis, pomalé čtení, rychlé vkládání doprostřed seznamu. Vzhledme k frekvenci operací bych asi dal přednost prvnímu. > byla řeč o enumeraci (přístup k následujícímu prvku) oproti indexaci > V mých progremech se indexu vyhýbám mj. proto, že se mi nelíbí. > V C a C++ raději pro iterace seznamů používám iterátory nebo ukazatelovou > aritmetiku > přijde mi to čitelnější i když se často fakticky jedná o totéž. Iterátory v C++ je něco jiného, než v Pythonu. Iterátor je prostě objekt s nejrychlejším možným přístupem, často je to jenom pointer, ale díky šablonám to může být naprosto cokoli a dá se dosáhnout nejvyšší efektivita. Ing. Miloslav Ponkrác _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
