Sequenzen arbeiten intern doch mit Hash-Werten. Somit dauert ein Vergleich, ob sich ein Element in einer Liste befindet, immer gleich lange, weil lediglich Hashes verglichen werden.
Fragen:
1) Ein Hash-Wert muss ja auch erstmal angelegt werden. Ich nehme an das passiert beim `alist.append(x)`, richtig?
2) Wenn ich nun sehr große Datenmengen in Listen ablege, gilt dann die Faustregel: Je größer der Inhalt, desto länger dauert die Hash-Wert-Berechnung und damit auch der append-Vorgang selbst.
3) Was für ein Hash-Wert wird eigentlich gebildet und wie lange dauert das?
Grund der Fragen: Mir ist zu Ohren gekommen dass das Arbeiten mit Listen sehr langsam werden soll. Bei größeren Datenmengen wie Datenbankergebnissen soll das wohl manchmal nervig sein.
Geschwindigkeiten von Sequenzen bzw. Listen
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Ich glaube du Verwechselst Sequenzen mit Dictionaries Oo
Das sieht doch sehr Linear aus
Code: Alles auswählen
[veers@castle lanshark]$ python -m timeit -s "x = range(1024)" "1024 in x"
10000 loops, best of 3: 46.2 usec per loop
[veers@castle lanshark]$ python -m timeit -s "x = range(10240)" "10240 in x"
1000 loops, best of 3: 456 usec per loop
[veers@castle lanshark]$ python -m timeit -s "x = range(10240)" "1 in x"
10000000 loops, best of 3: 0.151 usec per loop