Seite 1 von 1
Was macht: if x in myDict
Verfasst: Samstag 30. Dezember 2006, 10:21
von droptix
Beispiel:
Entspricht:
ungefähr dem hier:
Code: Alles auswählen
isIn(x, d):
for i in d:
if i == x:
return True
return False
if isIn(1, myDict):
pass
Also wird über alle Keys iteriert und bei jedem einzelnen geprüft, ob es sich um den gesuchten Wert handelt? Oder behandelt das Python intern irgendwie schneller?
Verfasst: Samstag 30. Dezember 2006, 11:58
von BlackJack
Die Semantik entspricht Deiner Schleife aber es ist schneller weil Dictionaries mit einer
Hashtabelle implementiert sind, also in O(1) Zeit festgestellt werden kann, ob ein Schlüssel enthalten ist oder nicht.
Verfasst: Samstag 30. Dezember 2006, 15:23
von droptix
Was meinst du damit?
BlackJack hat geschrieben:also in O(1) Zeit festgestellt werden kann, ob ein Schlüssel enthalten ist oder nicht.
Ist es signifikant schneller oder macht das in der Praxis kaum einen Unterschied?
Verfasst: Samstag 30. Dezember 2006, 16:23
von BlackJack
droptix hat geschrieben:Was meinst du damit?
BlackJack hat geschrieben:also in O(1) Zeit festgestellt werden kann, ob ein Schlüssel enthalten ist oder nicht.
Ist es signifikant schneller oder macht das in der Praxis kaum einen Unterschied?
O(1) bedeutet in konstanter Zeit, also unabhängig von der Anzahl der Einträge. Wenn man die Schlüssel alle durchläuft um den richtigen zu finden, oder festzustellen, dass er gar nicht enthalten ist, dann macht es einen Unterschied wieviele Einträge enthalten sind.
Verfasst: Samstag 30. Dezember 2006, 17:40
von Joghurt
Oder kurz gesagt: es ist signifikant schneller.