[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