Maneira mais rápida de checar se valor existe em uma lista em Python

Neste artigo você vai aprender a como checar se valor existe em uma lista em Python, da maneira mais performática possível

checar se valor existe em lista capa

Fala programador(a), beleza? Bora aprender mais sobre listas e Python!

Temos várias formas de verificar se um valor existe em uma lista utilizando o Python

Porém a mais rápida das abordagens é com o operador in

Basta ter a lista e compará-lo a algum valor, veja um exemplo prático:

x = [1, 2, 3, 4, 5]

if 3 in x:
  print("Encontrou!")

Além da sua agilidade em encontrar o valor, perceba também a simplicidade de sua sintaxe

Podemos atribuí-lo a condicionais, como no exempo acima e pronto!

Receberemos respostas como true e false, booleanos

True indica que o valor está presente na lista e False indica que não está

Conclusão

Neste artigo você aprendeu a como checar se valor existe em uma lista em Python

Utilizamos o operador in, que pode ser aplicado facilmente no código

Colocamos dois parâmetros:

  • Primeiro o valor que desejamos checar;
  • O operador in;
  • E por último a lista em que estamos buscando o valor;
Formação Vibe Coding
Formação Recomendada

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

A resposta será true ou false, dependendo se o elemento se encontra na lista ou não

Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias!

Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!

Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias

O link acima contém um cupom de desconto para os cursos!

E se eu quiser checar o contrário, que o valor NÃO existe?

Pra isso existe o not in, o irmão do in

Ele faz exatamente o caminho oposto: devolve True quando o valor NÃO está na lista


if 10 not in x:
print("Não encontrou!")

Repare que fica bem mais legível que escrever if not 10 in x, e o resultado é o mesmo booleano

Sempre que a sua condição for "se não estiver na lista, faça tal coisa", o not in é o caminho 🙂

Achei o valor, mas e a posição dele na lista?

O in responde só sim ou não

Se você precisa saber ONDE o valor está, quem faz esse trabalho é o método index()


print(x.index(20))

Tome cuidado! Se o valor não existir na lista, o index() não devolve False nem None, ele levanta um ValueError e derruba a execução do seu script

Por isso o combo mais seguro é checar primeiro e só depois pedir a posição:

if 20 in x:
print(x.index(20))

Dois métodos, cada um no seu papel: o in diz se existe, o index() diz onde está

E pra saber quantas vezes o valor aparece?

Aí entra o count()


print(x.count(2))

Vale entender o PORQUÊ de não usar o count() só pra checar existência: ele percorre a lista inteira pra fechar a conta, enquanto o in para assim que encontra o primeiro item

Ou seja: se você só quer saber SE existe, fica no in

Se você quer saber QUANTAS vezes existe, aí sim o count()

Por que o in é a forma mais rápida de escrever isso?

Aqui é o porquê antes do como

Quando você faz valor in lista, o Python vai comparando item por item até achar o que você pediu (ou até a lista acabar)

É o mesmo trabalho que um for com if dentro faria, só que sem você escrever o laço, sem variável de controle e sem break

Compare as duas versões:

# na mão
encontrou = False
for item in x:
if item == 3:
encontrou = True
break

# com o operador in
encontrou = 3 in x

Mesma ideia, uma linha, muito menos chance de errar

E se a sua lista é grande e você vai fazer checagem atrás de checagem no mesmo conjunto de dados, vale converter pra set:

nomes_set = set(nomes)

if "bruno" in nomes_set:
print("Encontrou!")

O set (assim como o dicionário) busca por hash, ele não precisa varrer item a item

Detalhe importante: set não guarda a ordem e não aceita valores repetidos, então só troque quando tudo que você precisa saber é se o valor existe

Três casos que pegam o pessoal de surpresa

O in não serve só pra lista, e é justamente aí que mora a pegadinha

Em string ele checa substring: "ana" in "banana" devolve True, porque ele procura o pedaço dentro do texto

Se você quer ignorar isso, normalize antes:


busca = "Python".lower()

if busca in linguagens:
print("Encontrou!")

Em dicionário ele olha as CHAVES, não os valores: pra procurar nos valores você precisa ser explícito com .values()

pessoa = {"nome": "ana", "cidade": "curitiba"}

print("nome" in pessoa)
print("ana" in pessoa.values())

Tome cuidado com esses três, é onde o retorno vem diferente do que a pessoa esperava

E se a lista for de dicionários ou de objetos?

O in compara o item INTEIRO, então ele não enxerga um campo lá dentro

Procurar "ana" numa lista de dicionários simplesmente devolve False, mesmo que exista um dicionário com esse nome

Pra esse caso o caminho é o any() com uma expressão geradora:

usuarios = [{"nome": "ana"}, {"nome": "bruno"}]

print("Encontrou!")

O any() também para no primeiro resultado verdadeiro, igual o in, então você não paga o preço de varrer o resto à toa

E dá pra usar a mesma ideia com qualquer condição, não só igualdade:


if any(n > 10 for n in numeros):
print("Tem número maior que 10 aqui!")

Bora ver na prática? Roda esse trecho aí e troca a condição, é o tipo de coisa que gruda melhor testando 😀

Perguntas rápidas sobre checar valor em lista no Python

O operador in funciona em tupla e em string também?

Sim, ele funciona em qualquer sequência

Em tupla o comportamento é o mesmo da lista, e em string ele checa se aquele pedaço de texto aparece dentro do texto maior

Qual a diferença entre in e index()?

O in responde se o valor existe e devolve True ou False

O index() devolve a posição do valor, e levanta um ValueError quando o valor não está lá

Como checar se o valor NÃO está na lista?

Com not in, assim: if valor not in lista

Dá pra checar vários valores de uma vez?

Dá, combinando com all() ou any()

O all() só devolve True se TODOS estiverem na lista, o any() devolve True se pelo menos um estiver

O in diferencia maiúscula de minúscula?

Diferencia sim

Se precisar ignorar, padronize os dois lados com .lower() antes de comparar

E foi além do básico: vimos o not in pro caso contrário, o index() pra descobrir a posição (com o cuidado do ValueError), o count() pra contar ocorrências, o set pra quando a checagem se repete muito e o any() pra procurar dentro de lista de dicionários

Guarda a regrinha: in pra saber SE existe, index() pra saber ONDE está, count() pra saber QUANTAS vezes

Com isso você cobre praticamente todo cenário de busca em lista no dia a dia 😀

Leia também

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação SAAS com IA

Formação SAAS com IA

Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!

  • 291 aulas
  • 18 projetos
  • 24h 17min

Blog | Mais populares