618 Stimmen

Gibt es eine kurze Enthält-Funktion für Listen?

Angesichts einer Liste xs und einen Wert item wie kann ich überprüfen, ob xs enthält item (d. h., wenn eines der Elemente von xs ist gleich item )? Gibt es etwas wie xs.contains(item) ?


Für Leistungsüberlegungen siehe <a href="https://stackoverflow.com/questions/7571635">Der schnellste Weg zu prüfen, ob ein Wert in einer Liste existiert </a>.

1026voto

defuz Punkte 25563

Úsalo:

if my_item in some_list:
    ...

Auch die umgekehrte Operation:

if my_item not in some_list:
    ...

Es funktioniert gut für Listen, Tupel, Mengen und Dicts (Prüfschlüssel).

Hinweis dass dies eine O(n)-Operation für Listen und Tupel, aber eine O(1)-Operation für Mengen und Dicts ist.

71voto

Ant Punkte 4908

Zusätzlich zu dem, was andere gesagt haben, könnte es Sie auch interessieren, dass die in ist der Aufruf der list.__contains__ Methode, die Sie für jede Klasse, die Sie schreiben, definieren können und die sehr nützlich sein kann, um Python in seinem vollen Umfang zu nutzen.

Eine dumme Verwendung kann sein:

>>> class ContainsEverything:
    def __init__(self):
        return None
    def __contains__(self, *elem, **k):
        return True

>>> a = ContainsEverything()
>>> 3 in a
True
>>> a in a
True
>>> False in a
True
>>> False not in a
False
>>>

7voto

Dustin Raimondi Punkte 373

Ich habe mir vor kurzem diesen One-Liner ausgedacht, um True wenn eine Liste eine beliebige Anzahl von Vorkommnissen eines Elements enthält, oder False wenn er keine oder gar keine Vorkommnisse enthält. Verwendung von next(...) gibt dies einen Standardrückgabewert ( False ) und bedeutet, dass es deutlich schneller laufen sollte als das Verstehen der gesamten Liste.

list_does_contain = next((True for item in list_to_test if item == test_item), False)

5voto

Mr. Squig Punkte 2735

Die Listenmethode index wird zurückgegeben -1 wenn der Eintrag nicht vorhanden ist, und gibt den Index des Eintrags in der Liste zurück, wenn er vorhanden ist. Alternativ kann in einer if Anweisung können Sie Folgendes tun:

if myItem in list:
    #do things

Sie können auch mit der folgenden if-Anweisung prüfen, ob ein Element nicht in einer Liste enthalten ist:

if myItem not in list:
    #do things

1voto

Andreas Punkte 7783

Es gibt auch die Listenmethode:

[2, 51, 6, 8, 3].__contains__(8)
# Out[33]: True
[2, 51, 6, 3].__contains__(8)
# Out[33]: False

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X