Ваш вопрос подразумевает, что вы заинтересованы только в том, что список содержит элемент , а не список содержит подсписок? / tuple / set / frozenset / ...?
smci
Ответы:
875
Вы можете использовать этот синтаксис:
if myItem in list:# do something
Также обратный оператор:
if myItem notin list:# do something
Это отлично работает для списков, кортежей, наборов и диктовок (проверьте ключи).
Обратите внимание, что это операция O (n) в списках и кортежах, но операция O (1) в наборах и диктатах.
Если список содержит пустые массивы, будет ли это проверять наличие пустых экземпляров или значений внутри пустых экземпляров?
Даниэль Мёллер
Осторожно! Это соответствует, в то время как это очень вероятно, что вы не ожидали:o='--skip'; o in ("--skip-ias"); # returns True !
Alex F
3
@AlexF: Это соответствует, потому что ("--skip-ias")это не кортеж, а строка (круглые скобки ничего не делают, как будто (1)это просто целое число). Если вам нужен 1-кортеж, вам нужно добавить запятую после одного элемента: ("--skip-ias",)(или (1,)).
Blckknght
Обратите внимание, что если вы сравниваете символы, это без учета регистра.
Tillson
65
В дополнение к тому, что сказали другие, вам также может быть интересно узнать, что inзначит вызывать list.__contains__метод, который вы можете определить для любого класса, который вы пишете, и который может стать чрезвычайно удобным для использования Python в полной мере.
Глупое использование может быть:
>>>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>>>
Я недавно придумал этот вкладыш, чтобы Trueузнать, содержит ли список какое-либо количество вхождений элемента или Falseесли он не содержит вхождений или вообще ничего. Использование next(...)дает этому возвращаемое значение по умолчанию ( False) и означает, что оно должно работать значительно быстрее, чем выполнение полного списка.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
В моем случае у меня есть список объектов с именем Category, и мне нужно его протестировать только для свойства Link, поэтому в моем случае это решение подходит лучше. Спасибо
Родригорф
3
any(item == test_item for item in list_to_test)будет работать тоже, я думаю?
кто-то
3
Метод list indexвернется, -1если элемент отсутствует, и вернет индекс элемента в списке, если он присутствует. В качестве альтернативы в ifзаявлении вы можете сделать следующее:
if myItem in list:#do things
Вы также можете проверить, нет ли элемента в списке, с помощью следующего оператора if:
Ответы:
Вы можете использовать этот синтаксис:
Также обратный оператор:
Это отлично работает для списков, кортежей, наборов и диктовок (проверьте ключи).
Обратите внимание, что это операция O (n) в списках и кортежах, но операция O (1) в наборах и диктатах.
источник
o='--skip'; o in ("--skip-ias"); # returns True !
("--skip-ias")
это не кортеж, а строка (круглые скобки ничего не делают, как будто(1)
это просто целое число). Если вам нужен 1-кортеж, вам нужно добавить запятую после одного элемента:("--skip-ias",)
(или(1,)
).В дополнение к тому, что сказали другие, вам также может быть интересно узнать, что
in
значит вызыватьlist.__contains__
метод, который вы можете определить для любого класса, который вы пишете, и который может стать чрезвычайно удобным для использования Python в полной мере.Глупое использование может быть:
источник
Я недавно придумал этот вкладыш, чтобы
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)
будет работать тоже, я думаю?Метод list
index
вернется,-1
если элемент отсутствует, и вернет индекс элемента в списке, если он присутствует. В качестве альтернативы вif
заявлении вы можете сделать следующее:Вы также можете проверить, нет ли элемента в списке, с помощью следующего оператора if:
источник
index
Метод не возвращает -1 , если элемент отсутствует, он выбрасываетValueError
исключение.