Como utilizar o 'in' no Python?
Operadores “in” e “not in” do Python: Verificando a Existência de Elementos
Os operadores in
e not in
do Python permitem que você verifique rapidamente se um determinado valor está ou não faz parte de uma coleção de valores. Esse tipo de verificação é comum na programação e é geralmente conhecido como teste de associação em Python. Portanto, esses operadores são chamados de operadores de associação.
Neste tutorial, você aprenderá como:
- Realizar testes de associação usando os operadores
in
enot in
- Utilizar
in
enot in
com diferentes tipos de dados - Trabalhar com
operator.contains()
, a função equivalente ao operadorin
- Fornecer suporte para
in
enot in
em suas próprias classes
Começando com Testes de Associação em Python
Às vezes, você precisa descobrir se um valor está presente em uma coleção de valores ou não. Em outras palavras, você precisa verificar se um determinado valor é ou não um membro de uma coleção de valores. Esse tipo de verificação é comumente conhecido como um teste de associação.
Considere a seguinte função is_member()
:
Para entender como essa função funciona, vamos dar uma olhada em alguns exemplos de uso.
Operador “in” do Python
O operador in
é usado para verificar se um valor está presente em uma coleção de valores. Ele retorna True
se o valor estiver presente e False
caso contrário.
Exemplo:
Saída:
Neste exemplo, verificamos se o número 3 está presente na lista de números [1, 2, 3, 4, 5]. Como o número 3 está na lista, a condição 3 in numbers
retorna True
e o primeiro bloco de código é executado, exibindo “3 está presente na lista” como resultado.
Operador “not in” do Python
O operador not in
é usado para verificar se um valor não está presente em uma coleção de valores. Ele retorna True
se o valor não estiver presente e False
caso contrário.
Exemplo:
Saída:
Neste exemplo, verificamos se o número 6 não está presente na lista de números [1, 2, 3, 4, 5]. Como o número 6 não está na lista, a condição 6 not in numbers
retorna True
e o primeiro bloco de código é executado, exibindo “6 não está presente na lista” como resultado.
Usando in
e not in
com Diferentes Tipos de Dados
Os operadores in
e not in
podem ser usados com diferentes tipos de dados em Python. Vamos ver como esses operadores funcionam com listas, tuplas, strings, geradores, dicionários e conjuntos.
Listas, Tuplas e Ranges
Os operadores in
e not in
podem ser usados para verificar se um valor está presente em uma lista, tupla ou range.
Exemplo:
Saída:
Neste exemplo, verificamos a presença da fruta “banana” na lista de frutas usando o operador in
. Como a fruta “banana” está na lista, a condição "banana" in fruits
retorna True
e a primeira mensagem é impressa. Em seguida, verificamos se a fruta “banana” não está presente na tupla usando o operador not in
. Como a fruta não está na tupla, a condição "banana" not in my_tuple
retorna True
e a segunda mensagem é impressa. Por fim, verificamos se o número 3 está presente no range usando o operador in
. Como o número 3 está no range, a condição 3 in my_range
retorna True
e a terceira mensagem é impressa.
Strings
Os operadores in
e not in
também podem ser usados para verificar se um caractere ou uma sequência de caracteres está presente em uma string.
Exemplo:
Saída:
Neste exemplo, verificamos a presença da palavra “Python” na frase usando o operador in
. Como a palavra “Python” está na frase, a condição "Python" in sentence
retorna True
e a primeira mensagem é impressa. Em seguida, verificamos se a palavra “ruby” não está presente na frase usando o operador not in
. Como a palavra não está na frase, a condição "ruby" not in sentence
retorna True
e a segunda mensagem é impressa.
Generators
Os operadores in
e not in
também podem ser usados para verificar se um valor está presente em um gerador.
Exemplo:
Saída:
Neste exemplo, criamos um gerador de quadrados usando uma compreensão de gerador. Verificamos se o número 4 está presente no gerador usando o operador in
. Como o número 4 é um dos valores gerados, a condição 4 in squares
retorna True
e a mensagem é impressa.
Dicionários e Conjuntos
Os operadores in
e not in
também podem ser usados para verificar se uma chave está presente em um dicionário ou se um elemento está presente em um conjunto.
Exemplo:
Saída:
Neste exemplo, verificamos se a chave “age” está presente no dicionário usando o operador in
. Como a chave está presente, a condição "age" in person
retorna True
e a primeira mensagem é impressa. Em seguida, verificamos se o elemento 6 não está presente no conjunto usando o operador not in
. Como o elemento não está no conjunto, a condição 6 not in my_set
retorna True
e a segunda mensagem é impressa.
Colocando os Operadores in
e not in
do Python em Ação
Os operadores in
e not in
são frequentemente usados para simplificar expressões lógicas. Vejamos alguns exemplos de como esses operadores podem ser usados em ações práticas.
Substituindo Operadores Encadeados ou
Às vezes, você precisa verificar se uma variável está contida em várias coleções de valores. Uma abordagem comum seria usar operadores lógicos ou (|
) para combinar várias condições.
Exemplo:
Saída:
Neste exemplo, verificamos se o número 10 está presente em uma lista de valores usando um operador lógico ou (|
). No entanto, essa abordagem pode se tornar custosa e difícil de manter se tivermos muitas condições. Uma alternativa mais concisa é usar o operador in
em conjunto com uma lista, como mostrado a seguir:
Saída:
Neste exemplo, verificamos se o número 10 está na lista [5, 10, 15]
usando o operador in
. Como o número está na lista, a condição number in [5, 10, 15]
retorna True
e a mensagem é impressa. Usar o operador in
torna o código mais legível e mais fácil de manter.
Escrevendo Testes de Associação Eficientes
Quando você está lidando com grandes coleções de valores, pode ser necessário realizar muitos testes de associação. Nesse caso, usar a função is_member()
descrita anteriormente pode não ser eficiente, pois ela percorre todos os valores.
Em vez disso, você pode usar os operadores in
e not in
diretamente nas coleções de valores. Esses operadores são implementados de forma eficiente nas estruturas de dados do Python, o que torna os testes de associação rápidos e eficientes.
Exemplo:
Saída:
Neste exemplo, verificamos se o número 999999 está presente em uma lista grande com um milhão de valores. Usamos o operador in
diretamente na lista, o que permite uma verificação eficiente. Como o número está na lista, a condição 999999 in large_list
retorna True
e a mensagem é impressa.
Usando operator.contains()
para Testes de Associação
Além dos operadores in
e not in
, o módulo operator
fornece a função contains()
, que é equivalente ao operador in
. Essa função pode ser útil quando você precisa passar um teste de associação como um argumento de função.
Exemplo:
Saída:
Neste exemplo, usamos a função contains()
do módulo operator
para verificar se o número 3 está presente na lista de números. Como o número está na lista, a chamada operator.contains(numbers, 3)
retorna True
e a mensagem é impressa.
Suportando Testes de Associação em Classes Definidas pelo Usuário
Você também pode adicionar suporte para operações de teste de associação em suas próprias classes definindo os métodos __contains__()
e __notcontains__()
.
Exemplo:
Saída:
Neste exemplo, criamos uma classe chamada MyList
que possui uma lista de valores. Definimos os métodos __contains__()
e __notcontains__()
para permitir a verificação de associação usando os operadores in
e not in
em instâncias dessa classe. Ao verificar a associação de um valor em my_list
, os métodos correspondentes são chamados e a verificação é realizada.
Conclusão
Os operadores in
e not in
são ferramentas poderosas para realizar testes de associação em Python. Eles permitem que você verifique rapidamente se um valor está presente em uma coleção de valores, simplificando seu código e tornando-o mais legível.
Neste tutorial, você aprendeu como usar os operadores in
e not in
com diferentes tipos de dados, como listas, tuplas, strings, geradores, dicionários e conjuntos. Você também aprendeu sobre a função operator.contains()
e como adicionar suporte para testes de associação em suas próprias classes.
Agora que você dominou o uso dos operadores de associação, você pode aplicar esse conhecimento em seus programas Python para realizar testes de associação eficientes e concisos.