Есть ли короткая функция для списков?

Я вижу, что люди используют any для сбора другого списка, чтобы узнать, существует ли элемент в списке, но есть ли быстрый способ сделать это:

if list.contains(myItem):
    # do something

Ответ 1

Вы можете использовать этот синтаксис:

if myItem in list:
    # do something

Кроме того, обратный оператор:

if myItem not in list:
    # do something

Он отлично работает для списков, кортежей, наборов и dicts (контрольные клавиши).

Примечание, что это операция O (n) в списках и кортежах, но операция O (1) в наборах и dicts.

Ответ 2

В дополнение к тому, что говорили другие, вам также может быть интересно узнать, что то, что 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
>>>         

Ответ 3

Недавно я придумал этот один лайнер для получения True, если список содержит любое количество вхождений элемента или False, если он не содержит вхождений или вообще ничего. Использование next(...) дает это возвращаемое по умолчанию значение (False) и означает, что он должен выполняться значительно быстрее, чем запустить полное понимание списка.

list_does_contain = next((True for item in list_to_test if item == test_item), False)

Ответ 4

Метод списка index вернет -1, если элемент отсутствует, и вернет индекс элемента в списке, если он присутствует. Альтернативно в инструкции if вы можете сделать следующее:

if myItem in list:
    #do things

Вы также можете проверить, нет ли элемента в списке со следующим оператором if:

if myItem not in list:
    #do things

Ответ 5

Я нахожу, что это самый удобный способ сделать это, поскольку вы не можете использовать метод for loop для необъявленных жестко заданных значений.

if list.count(myItem) >= 1:
  do something...

В качестве проблемного примера:

list = [111,222,333]
for 111 in list:
  print "contained"

выдает ошибку, тогда как "если list.count(111) >= 1" не будет.

Ответ 6

есть та же проблема

у меня есть список, в котором значения abc = [mai.csv, other.csv, attribute.csv] abc = [mai.csv, other.csv, attribute_data.csv], когда мы запускаем if attribute.csv в abc;

тогда он возвращает истину для обоих условий..