Überprüfen Sie, ob sich das Element in einem Array / einer Liste befindet


203

Wenn ich ein Array von Zeichenfolgen habe, kann ich überprüfen, ob sich eine Zeichenfolge im Array befindet, ohne eine forSchleife auszuführen? Insbesondere suche ich nach einer Möglichkeit, dies innerhalb einer ifAnweisung zu tun , also ungefähr so:

if [check that item is in array]:

3
Ich denke , die Frage bereits beantwortet ist hier
Tarun Ande


Antworten:


393

Angenommen, Sie meinen "Liste", in der Sie "Array" sagen, können Sie dies tun

if item in my_list:
    # whatever

Dies funktioniert für jede Sammlung, nicht nur für Listen. Bei Wörterbüchern wird geprüft, ob der angegebene Schlüssel im Wörterbuch vorhanden ist.


1
@jdi, und diese Schleife läuft viel schneller als die explizit in Python codierte, ganz zu schweigen davon, dass sie einfacher zu lesen ist.
Mark Ransom

17

Ich gehe auch davon aus, dass Sie "Liste" meinen, wenn Sie "Array" sagen. Die Lösung von Sven Marnach ist gut. Wenn Sie die Liste wiederholt überprüfen, lohnt es sich möglicherweise, sie in einen Satz oder ein Frozenset umzuwandeln, was für jede Überprüfung schneller sein kann. Angenommen, Ihre Liste der Strs heißt subjects:

subject_set = frozenset(subjects)
if query in subject_set:
    # whatever

3

Verwenden Sie eine Lambda-Funktion.

Angenommen, Sie haben ein Array:

nums = [0,1,5]

Überprüfen Sie, ob 5 in nums:

(len(filter (lambda x : x == 5, nums)) > 0)

Diese Lösung ist robuster. Sie können jetzt überprüfen, ob sich eine Zahl in Ihrem Array befindet, die eine bestimmte Bedingung erfüllt nums.

Überprüfen Sie beispielsweise, ob eine Zahl größer oder gleich 5 vorhanden ist in nums:

(len(filter (lambda x : x >= 5, nums)) > 0)

Dies funktioniert mit Python2. Mit Python 3.7 erhalten Sie diesen Fehler:TypeError: object of type 'filter' has no len()
Jun711

1

Sie müssen .values ​​für Arrays verwenden. Angenommen, Sie haben einen Datenrahmen mit einem Spaltennamen, dh Sie können ['Name'] testen

if name in test['Name'].values :
   print(name)

Für eine normale Liste müssen Sie keine .values ​​verwenden


Ich denke, Sie benötigen ein Pandas DataFrame-Objekt, um .values ​​zu verwenden.
troymyname00

-3

Sie können dieselbe Syntax auch für ein Array verwenden. Zum Beispiel bei der Suche innerhalb einer Pandas-Serie:

ser = pd.Series(['some', 'strings', 'to', 'query'])

if item in ser.values:
    # do stuff
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.