Jeśli mam tablicę ciągów, czy mogę sprawdzić, czy ciąg znaków znajduje się w tablicy bez wykonywania for
pętli? W szczególności szukam sposobu, aby to zrobić w if
instrukcji, więc coś takiego:
if [check that item is in array]:
Jeśli mam tablicę ciągów, czy mogę sprawdzić, czy ciąg znaków znajduje się w tablicy bez wykonywania for
pętli? W szczególności szukam sposobu, aby to zrobić w if
instrukcji, więc coś takiego:
if [check that item is in array]:
Odpowiedzi:
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.
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
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)
TypeError: object of type 'filter' has no len()
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