[python] Modifikace seznamu bez kopirovnani (bylo SQLite - forma selectovaných dat)
Jan Matejka
matejka na cat.cz
Pondělí Leden 8 11:30:09 CET 2007
> Drobná chybička, která ale může ovlivňovat výsledek.
> Iterátor vracený funkcí enumerate() vrací dvojice (index,
> hodnota) a ne (hodnota, index).
děkuji
for v,i in enumerate(l1):
l1[i]=v+1
6.51600003242
> Je jasné, že použití enumerate bude pomalejší, než použití
> xrange(), protože se musí konstruovat navíc ta dvojice a
> navíc se pak musí rozdělávat na i, v.
ano to vím
Pokud by však platila teze, že čtení prvku seznamu pomocí indexu je pro
velké seznamy pomalé, tak by varianta s enumerate mohla být rychlejší.
Důvodem je to, že získává další hodnotu načtením následujícího prvku v
seznamu (rychlá operace) namísto pomalého přístupu přes index.
Test však ukázal, že uvedená tese neplatí, takže pythovský list() asi není
obyčejný obousměrně svázaný seznam.
Jan Matějka
Další informace o konferenci Python