Я бачу, що люди використовують any
для того, щоб зібрати інший список, щоб побачити, чи існує якийсь елемент у списку, але чи є швидкий спосіб просто зробити ?:
if list.contains(myItem):
# do something
Я бачу, що люди використовують any
для того, щоб зібрати інший список, щоб побачити, чи існує якийсь елемент у списку, але чи є швидкий спосіб просто зробити ?:
if list.contains(myItem):
# do something
Відповіді:
Ви можете використовувати цей синтаксис:
if myItem in list:
# do something
Також зворотний оператор:
if myItem not in list:
# do something
Це чудово працює для списків, кортежів, наборів та диктів (контрольні клавіші).
Зауважте, що це операція O (n) у списках та кортежах, але операція O (1) у множинах та диктах.
o='--skip'; o in ("--skip-ias"); # returns True !
("--skip-ias")
це не кортеж, а рядок (круглі дужки нічого не роблять, як (1)
і лише ціле число). Якщо ви хочете 1-кортеж, вам потрібно додати кому після одного елемента: ("--skip-ias",)
(або (1,)
).
На додаток до того, що сказали інші, вам також може бути цікаво знати, що in
означає викликати list.__contains__
метод, який ви можете визначити в будь-якому класі, який ви пишете, і ви можете отримати надзвичайно зручне використання python у повному обсязі.
Німим вживанням може бути:
>>> 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
>>>
Нещодавно я придумав цей один вкладиш, щоб дізнатися, True
чи список містить будь-яку кількість подій, або False
якщо він не містить подій або взагалі нічого. Використання next(...)
надає цьому значенню повернення за замовчуванням ( False
) і означає, що воно повинно працювати значно швидше, ніж виконання розуміння всього списку.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
any(item == test_item for item in list_to_test)
працював би теж, я думаю?
Метод списку index
повернеться, -1
якщо елемента немає, і поверне індекс елемента в списку, якщо він присутній. Альтернативно вif
заяві ви можете зробити наступне:
if myItem in list:
#do things
Ви також можете перевірити, чи немає елемента в списку, за допомогою наступного оператора if:
if myItem not in list:
#do things
index
Метод не повертає -1 , якщо елемент відсутній, він викидає ValueError
виключення.