Czy lista zawierająca tablice numpy sprawdzi, czy instancje numpy lub wartości znajdują się w instancjach numpy?
Daniel Möller,
Uwaga! To pasuje, podczas gdy jest to prawdopodobnie to, czego się nie spodziewałeś:o='--skip'; o in ("--skip-ias"); # returns True !
Alex F
3
@AlexF: Pasuje, ponieważ ("--skip-ias")nie jest krotką, ale łańcuchem (nawiasy nic nie robią, tak jak (1)zwykła liczba całkowita). Jeśli chcesz 1-krotkę, musisz dodać przecinek po pojedynczym elemencie: ("--skip-ias",)(lub (1,)).
Blckknght,
Pamiętaj, że jeśli porównujesz znaki, nie uwzględnia to wielkości liter.
Tillson
65
Oprócz tego, co powiedzieli inni, możesz również chcieć wiedzieć, że to, co inrobi, to wywołać list.__contains__metodę, którą możesz zdefiniować w dowolnej klasie, którą piszesz, i może być bardzo przydatny w użyciu Pythona w pełnym zakresie.
Głupie użycie może być:
>>>classContainsEverything:def __init__(self):returnNonedef __contains__(self,*elem,**k):returnTrue>>> a =ContainsEverything()>>>3in a
True>>> a in a
True>>>Falsein a
True>>>Falsenotin a
False>>>
Ostatnio wymyśliłem ten jeden linijka do sprawdzania, Trueczy lista zawiera dowolną liczbę wystąpień elementu lub Falsejeśli nie zawiera żadnych wystąpień lub w ogóle nic. Użycie next(...)daje domyślną wartość zwracaną ( False) i oznacza, że powinien działać znacznie szybciej niż uruchamianie pełnego zrozumienia listy.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
W moim przypadku mam listę obiektów o nazwie Kategoria i muszę ją przetestować tylko dla właściwości Link, więc to rozwiązanie lepiej pasuje w moim przypadku. Dzięki
rodrigorf,
3
any(item == test_item for item in list_to_test)też by działało, tak myślę?
ktoś
3
Metoda listy indexzwróci, -1jeśli element nie jest obecny, i zwróci indeks elementu na liście, jeśli jest obecny. Alternatywnie w ifinstrukcji możesz wykonać następujące czynności:
if myItem in list:#do things
Możesz również sprawdzić, czy elementu nie ma na liście za pomocą następującej instrukcji if:
Odpowiedzi:
Możesz użyć tej składni:
Ponadto operator odwrotny:
Działa dobrze w przypadku list, krotek, zestawów i nagrań (klawisze wyboru).
Zauważ, że jest to operacja O (n) w listach i krotkach, ale operacja O (1) w zestawach i słownikach.
źródło
o='--skip'; o in ("--skip-ias"); # returns True !
("--skip-ias")
nie jest krotką, ale łańcuchem (nawiasy nic nie robią, tak jak(1)
zwykła liczba całkowita). Jeśli chcesz 1-krotkę, musisz dodać przecinek po pojedynczym elemencie:("--skip-ias",)
(lub(1,)
).Oprócz tego, co powiedzieli inni, możesz również chcieć wiedzieć, że to, co
in
robi, to wywołaćlist.__contains__
metodę, którą możesz zdefiniować w dowolnej klasie, którą piszesz, i może być bardzo przydatny w użyciu Pythona w pełnym zakresie.Głupie użycie może być:
źródło
Ostatnio wymyśliłem ten jeden linijka do sprawdzania,
True
czy lista zawiera dowolną liczbę wystąpień elementu lubFalse
jeśli nie zawiera żadnych wystąpień lub w ogóle nic. Użycienext(...)
daje domyślną wartość zwracaną (False
) i oznacza, że powinien działać znacznie szybciej niż uruchamianie pełnego zrozumienia listy.list_does_contain = next((True for item in list_to_test if item == test_item), False)
źródło
any(item == test_item for item in list_to_test)
też by działało, tak myślę?Metoda listy
index
zwróci,-1
jeśli element nie jest obecny, i zwróci indeks elementu na liście, jeśli jest obecny. Alternatywnie wif
instrukcji możesz wykonać następujące czynności:Możesz również sprawdzić, czy elementu nie ma na liście za pomocą następującej instrukcji if:
źródło
index
Sposób nie zwraca -1, jeśli element ten nie jest obecny, zgłaszaValueError
wyjątek.