Was ist die Komplexität des inOperators in Python? Ist es Theta (n)?
Ist es dasselbe wie das Folgende?
def find(L, x):
for e in L:
if e == x:
return True
return False
L ist eine Liste.
Was ist die Komplexität des inOperators in Python? Ist es Theta (n)?
Ist es dasselbe wie das Folgende?
def find(L, x):
for e in L:
if e == x:
return True
return False
L ist eine Liste.
Limpliziert keine Liste. seqist die häufigste Wahl, wenn man eine Liste implizieren möchte. List ein schrecklicher Variablenname. Einzelbuchstaben sind schlecht, und das Kapital impliziert, dass es eine Klasse ist. Auch wenn es sich um etwas Besonderes handelte, ist Python dynamisch. Geben Sie dies in einem solchen Fall explizit an.
Lbedeutet list? Meine libtelepathy.so ist wahrscheinlich veraltet.
list
Antworten:
Die Komplexität von inhängt ganz davon ab, was List. e in Lwird werden L.__contains__(e).
In diesem Dokument zur Zeitkomplexität finden Sie Informationen zur Komplexität mehrerer integrierter Typen.
Hier ist die Zusammenfassung für in:
Der O (n) Worst Case für Sets und Dicts ist sehr ungewöhnlich, kann aber passieren, wenn er __hash__schlecht implementiert wird. Dies geschieht nur, wenn alles in Ihrem Set den gleichen Hashwert hat.
OrderedDict, und wie Sie herausfinden konnten: OrderedDictwird von geerbt dict, so dass die meisten Operationen (natürlich mit Ausnahmen) die gleiche Komplexität haben .
Dies hängt vollständig von der Art des Behälters ab. Hashing-Container ( dict, set) verwenden den Hash und sind im Wesentlichen O (1). Typische Sequenzen ( list, tuple) werden wie erraten implementiert und sind O (n). Bäume wären durchschnittlich O (log n). Und so weiter. Jeder dieser Typen hätte eine geeignete __contains__Methode mit seinen Big-O-Eigenschaften.
dictund set(sowie möglicherweise andere)
Dies hängt vom zu testenden Container ab. Es ist normalerweise das, was Sie erwarten würden - linear für geordnete Datenstrukturen, konstant für ungeordnete. Natürlich gibt es beide Typen (geordnet oder ungeordnet), die möglicherweise von einer Baumvariante unterstützt werden.
A in Btestet, ob Ain B.