it-swarm.com.de

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

Ich sehe, dass Leute any verwenden, um eine andere Liste zu erstellen, um festzustellen, ob ein Element in einer Liste vorhanden ist. Gibt es jedoch eine schnelle Möglichkeit, dies einfach zu tun ?:

if list.contains(myItem):
    # do something
455
Joan Venge

Sie können diese Syntax verwenden:

if myItem in list:
    # do something

Auch inverser Operator:

if myItem not in list:
    # do something

Es funktioniert gut für Listen, Tupel, Mengen und Dicts (Check Keys).

Anmerkung dass dies eine O(n) Operation in Listen und Tupeln ist, aber eine O(1) Operation in Mengen und Dikten.

775
defuz

Zusätzlich zu dem, was andere gesagt haben, könnte es Sie auch interessieren zu wissen, dass in die list.__contains__ -Methode aufruft, die Sie für jede Klasse definieren können, die Sie schreiben, und die sich als äußerst praktisch erweisen kann python in vollem Umfang.

Eine blöde 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
>>>         
61
Ant

Ich habe mir kürzlich diesen einen Liner ausgedacht, um True zu erhalten, wenn eine Liste eine beliebige Anzahl von Vorkommen eines Elements enthält, oder False, wenn es keine Vorkommen oder gar nichts enthält. Die Verwendung von next(...) gibt einen Standardrückgabewert (False) zurück und bedeutet, dass die Ausführung erheblich schneller sein sollte als die Ausführung des gesamten Listenverständnisses.

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

5
Dustin Raimondi

Die Listenmethode index gibt -1 zurück, wenn das Element nicht vorhanden ist, und gibt den Index des Elements in der Liste zurück, wenn es vorhanden ist. Alternativ können Sie in einer if -Anweisung 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
3
Mr. Squig