Laufzeit des in Keywords

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
snow
User
Beiträge: 25
Registriert: Mittwoch 4. Juli 2012, 08:52

Hallo, ich bin gerade dabei zu versuchen eine Liste von Wörtern mit einer weiteren Liste von Wörtern zu erweitern. Dabei soll kein Wort der Ausgangsliste hinzugefügt werden, welches bereits enthalten ist. Natürlich bin ich als erstes auf folgende Idee gekommen:

Code: Alles auswählen

for word in words2:
     if word not in words:
        words.append(word)
Ich bin mir zwar ziemlich sicher, dass das eine Laufzeit von O(n^2) haben wird, konnte aber leider nichts im Netz zu der Laufzeit von "in" finden. Vielleicht kann mir dazu jemand etwas konkretes sagen. Danke schon einmal im Voraus :)
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Definiere Deine Wortlisten als Sets und vereinige dann diese.
BlackJack

@snow: Bei Listen ist die Laufzeit in der Tat linear. Ansonsten hängt sie von den Typen ab, denn was genau beim ``in``-Operator passiert hängt vom Typ des Objekts auf der rechten Seite ab. Dieses Objekt wird befragt ob das auf der linken Seite enthalten ist. Wie konkret passiert bestimmt der Programmierer des Typs von dem Objekt. Entweder weil er sich entscheidet eine `__contains__()`-Methode zu schreiben, oder das Objekt iterierbar macht.
snow
User
Beiträge: 25
Registriert: Mittwoch 4. Juli 2012, 08:52

Ok danke für die Erklärung Blackjack und danke kbr für die Alternative. Werde auf jeden Fall davon Gebrauch machen :D
Antworten