Sprawdź, czy element znajduje się w tablicy / liście


203

Jeśli mam tablicę ciągów, czy mogę sprawdzić, czy ciąg znaków znajduje się w tablicy bez wykonywania forpętli? W szczególności szukam sposobu, aby to zrobić w ifinstrukcji, więc coś takiego:

if [check that item is in array]:

3
Myślę, że odpowiedź na to pytanie jest już dostępna tutaj
Tarun Ande


Odpowiedzi:


395

Zakładając, że masz na myśli „listę”, w której mówisz „tablicę”, możesz to zrobić

if item in my_list:
    # whatever

Działa to w przypadku każdej kolekcji, nie tylko list. W przypadku słowników sprawdza, czy dany klucz jest obecny w słowniku.


1
@jdi, a ta pętla będzie działać znacznie szybciej niż ta, która jest wyraźnie zakodowana w Pythonie, nie mówiąc już o łatwiejszym czytaniu.
Mark Ransom

17

Zakładam również, że masz na myśli „lista”, kiedy mówisz „tablica”. Rozwiązanie Svena Marnacha jest dobre. Jeśli zamierzasz powtarzać kontrole na liście, warto przekonwertować ją na zestaw lub zestaw zamrożony, co może być szybsze dla każdej kontroli. Zakładając, że twoja lista strów nazywa się subjects:

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

3

Użyj funkcji lambda.

Powiedzmy, że masz tablicę:

nums = [0,1,5]

Sprawdź, czy 5 jest w nums:

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

To rozwiązanie jest bardziej niezawodne. Możesz teraz sprawdzić, czy w Twojej tablicy znajduje się dowolna liczba spełniająca określony waruneknums .

Na przykład sprawdź, czy istnieje dowolna liczba większa lub równa 5 w nums:

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

Działa to z Python2. W Pythonie 3.7 pojawi się ten błąd:TypeError: object of type 'filter' has no len()
Jun711,

1

Musisz użyć .values ​​dla tablic. na przykład powiedzmy, że masz ramkę danych, która ma nazwę kolumny, tzn. przetestuj [„Nazwa”], możesz to zrobić

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

dla normalnej listy nie musisz używać wartości


Myślę, że potrzebujesz obiektu Pandas DataFrame do korzystania z .values.
troymyname00

-3

Możesz także użyć tej samej składni dla tablicy. Na przykład wyszukiwanie w serii Pandy:

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

if item in ser.values:
    # do stuff
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.