Czy istnieje krótka funkcja contains dla list?
Widzę, że ludzie używają any
do zebrania innej listy, aby sprawdzić, czy Element istnieje na liście, ale czy jest jakiś szybki sposób, aby to zrobić?:
if list.contains(myItem):
# do something
4 answers
Możesz użyć tej składni:
if myItem in list:
# do something
Również operator odwrotny:
if myItem not in list:
# do something
Działa dobrze dla list, krotek, zestawów i dictów (klawiszy wyboru).
Zauważ, że jest to operacja O(n) w listach i krotkach, ale operacja O (1) W setach i dictach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-17 12:30:33
Oprócz tego, co powiedzieli inni, możesz być również zainteresowany, aby wiedzieć, że to, co robi in
, to wywoływanie metody list.__contains__
, którą możesz zdefiniować na dowolnej klasie, którą piszesz i która może być niezwykle przydatna do używania Pythona w pełnym zakresie.
Głupie użycie może być:
>>> 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
>>>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-18 21:00:37
Wymyśliłem ten jeden liner niedawno, aby uzyskać True
jeśli lista zawiera dowolną liczbę wystąpień elementu, lub False
jeśli nie zawiera żadnych wystąpień lub nic w ogóle. Użycie next(...)
daje temu domyślną wartość zwracaną (False
) i oznacza, że powinno działać znacznie szybciej niż uruchamianie całej listy.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-25 23:13:14
Metoda list index
zwróci -1
, Jeśli element nie jest obecny, i zwróci indeks elementu na liście, jeśli jest obecny. Alternatywnie w deklaracji if
można wykonać następujące czynności:
if myItem in list:
#do things
Możesz również sprawdzić, czy element nie znajduje się na liście za pomocą następującej instrukcji if:
if myItem not in list:
#do things
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-17 12:22:43