Vejo que as pessoas estão usando any
para reunir outra lista para ver se existe um item em uma lista, mas existe uma maneira rápida de fazer isso:
if list.contains(myItem):
# do something
Vejo que as pessoas estão usando any
para reunir outra lista para ver se existe um item em uma lista, mas existe uma maneira rápida de fazer isso:
if list.contains(myItem):
# do something
Respostas:
Você pode usar esta sintaxe:
if myItem in list:
# do something
Além disso, operador inverso:
if myItem not in list:
# do something
É um bom trabalho para listas, tuplas, conjuntos e dictos (teclas de verificação).
Observe que esta é uma operação O (n) em listas e tuplas, mas uma operação O (1) em conjuntos e dictos.
o='--skip'; o in ("--skip-ias"); # returns True !
("--skip-ias")
não é uma tupla, mas uma string (os parênteses não fazem nada, assim como (1)
é apenas um número inteiro). Se você deseja uma tupla de 1, você precisa adicionar uma vírgula após o item único: ("--skip-ias",)
(ou (1,)
).
Além do que outros disseram, você também pode estar interessado em saber que o que in
faz é chamar o list.__contains__
método, que você pode definir em qualquer classe que escrever e pode ser extremamente útil para usar python em toda sua extensão.
Um uso tolo pode ser:
>>> 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
>>>
Eu vim com esse liner recentemente para saber True
se uma lista contém qualquer número de ocorrências de um item ou False
se não contém ocorrências ou nada. O uso next(...)
fornece um valor de retorno padrão ( False
) e significa que ele deve executar significativamente mais rápido do que executar toda a compreensão da lista.
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)
funcionaria também, eu acho?
O método list index
retornará -1
se o item não estiver presente e retornará o índice do item na lista, se estiver presente. Como alternativa, em uma if
declaração, você pode fazer o seguinte:
if myItem in list:
#do things
Você também pode verificar se um elemento não está em uma lista com a seguinte instrução if:
if myItem not in list:
#do things
index
método não retorna -1 se o elemento não estiver presente, lança uma ValueError
exceção.