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]:

3
Eu acho que a pergunta já foi respondida aqui
Tarun Ande


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.


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

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)

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.