Verifique se o item está em uma matriz / lista

203

Se eu tenho uma matriz de cadeias, posso verificar se uma cadeia está na matriz sem fazer um forloop? Especificamente, estou procurando uma maneira de fazer isso dentro de uma ifdeclaração, algo assim:

if [check that item is in array]:
SomeKittens
fonte
3
Eu acho que a pergunta já foi respondida aqui
Tarun Ande
1
Ou melhor aqui: stackoverflow.com/questions/12934190/…
torina 20/02

Respostas:

396

Supondo que você queira dizer "lista" onde diz "matriz", você pode fazer

if item in my_list:
    # whatever

Isso funciona para qualquer coleção, não apenas para listas. Para dicionários, verifica se a chave fornecida está presente no dicionário.

Sven Marnach
fonte
1
@jdi, e esse loop será executado muito mais rápido do que o codificado explicitamente em Python, sem mencionar que é mais fácil de ler.
Mark Ransom
17

Também vou assumir que você quer dizer "lista" quando diz "matriz". A solução de Sven Marnach é boa. Se você estiver fazendo verificações repetidas na lista, pode valer a pena convertê-lo em um conjunto ou frozenset, o que pode ser mais rápido para cada verificação. Supondo que sua lista de strs seja chamada subjects:

subject_set = frozenset(subjects)
if query in subject_set:
    # whatever
Michael Hoffman
fonte
3

Use uma função lambda.

Digamos que você tenha uma matriz:

nums = [0,1,5]

Verifique se 5 está em nums:

(len(filter (lambda x : x == 5, nums)) > 0)

Esta solução é mais robusta. Agora você pode verificar se algum número que satisfaça uma determinada condição está em sua matriz nums.

Por exemplo, verifique se existe algum número maior ou igual a 5 em nums:

(len(filter (lambda x : x >= 5, nums)) > 0)
Marquistador
fonte
Isso funciona com o Python2. Com o Python 3.7, você receberá este erro:TypeError: object of type 'filter' has no len()
Jun711 20/09/19
1

Você precisa usar .values ​​para matrizes. por exemplo, digamos que você tenha um quadro de dados com um nome de coluna, ou seja, teste ['Nome'], você pode executar

if name in test['Name'].values :
   print(name)

para uma lista normal, você não precisa usar .values

sam komo
fonte
Eu acho que você precisa de um objeto Pandas DataFrame para usar valores.
troymyname00
-3

Você também pode usar a mesma sintaxe para uma matriz. Por exemplo, pesquisando em uma série do Pandas:

ser = pd.Series(['some', 'strings', 'to', 'query'])

if item in ser.values:
    # do stuff
BCR
fonte