Olá Pythonista!
Nesse post vamos falar sobre uma técnica muito Pythônica de se manipular Sets: as chamadas Set Comprehensions ou Compreensão de Sets!
Com ela é possível criar e iterar sobre sets de uma maneira muito eficiente e concisa!
Mas… Se você ainda não domina o assunto, corre no nosso post completo sobre Sets aqui da Python Academy!
Bora pro post!
Vá Direto ao Assunto…
- Set Comprehension
- Set Comprehensions com Condicional If
- Set Comprehensions com Múltiplos Condicionais If
Set Comprehension
Set Comprehension é uma técnica presente na Linguagem que nos possibilita criar sets a partir de outros sets de uma maneira bem Pythônica.
Esse conceito também está presente nas listas, com as chamadas List Comprehensions (e veja só se não temos um post completo sobre o assunto ) e nos Dicionários, com as chamadas Dict Comprehensions (e não é que TAMBÉM temos um post completo sobre o assunto!).
Sua sintaxe base consiste em utilizar a estrutura de repetição for ... in ...
dentro de chaves {}
, da seguinte maneira:
1
{ expressão for variável in iterável }
Vamos agora a um exemplo prático:
1
2
3
4
5
lista = [1, 1, 2, 3, 4]
set_comp = {num for num in lista}
print(set_comp)
print(type(set_comp))
Saída:
1
2
{1, 2, 3, 4}
<class 'set'>
Agora vamos explicar passo a passo:
- Estamos aplicando set comprehension à lista
lista
para gerar um set, ao final. - A cada iteração, o set resultante estará recebendo o valor da lista. Primeiro 1, depois 1 novamente e OPA: sets não permitem dados duplicados, então o segundo 1 vaza! Em seguida, o 2, depois o 3 e por fim, o 4.
- Ao final, temos o set resultante:
{1, 2, 3, 4}
Agora, vamos aumentar o nível!
Vamos multiplicar por 2 todos os números do iterável:
1
2
3
4
iteravel = [0, 1, 2, 3, 4]
set_comp = {num * 2 for num in iteravel}
print(set_comp)
Resultando no seguine set:
1
{0, 2, 4, 6, 8}
Set Comprehensions com Condicional If
Também é possível adicionar expressões condicionais à Set Comprehensions.
Sua sintaxe básica é a seguinte:
1
{ expressão for variável in iterável if expressao }
Ou seja, só estará presente no set resultante as variáveis que passarem na condição if
do Set Comprehensions.
Deixa eu explicar com um exemplo!
Suponha que lhe peçam para desenvolver um código que crie um set com apenas os elementos de uma lista de strings que contenham o caracter 0
.
Portanto 100
, 105
e 10
estariam presentes no set de saída, mas 5
, 1
ou 2
não.
Uma forma de desenvolver esse código seria a seguinte:
1
2
3
4
5
iteravel = ['15', '20', '1', '100', '0']
set_comp = { num for num in iteravel if '0' in str(num) }
print(set_comp)
Veja a saída:
1
{20, 100, 0}
Está curtindo esse conteúdo?
Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?
Set Comprehensions com Múltiplos Condicionais If
Podemos ainda adicionar vários condicionais para filtrar os elementos que estarão presentes no set de saída, após o processamento pelo Set Comprehension.
Sua sintaxe base é:
1
{ expressão for variável in iterável if expressão_1 if expressão_2 if ... }
É similar ao caso de uma condicional apenas. Vamos ao exemplo!
Suponha que lhe tenha sido pedido para encontrar os números divisíveis por 2 e 4 de determinado conjunto de números.
Isso poderia ser feito da seguinte maneira:
1
2
3
4
5
iteravel = range(20)
set_comp = {num for num in iteravel if num % 2 == 0 if num % 4 == 0}
print(set_comp)
Veja a saída:
1
{0, 4, 8, 12, 16}
Usa-lo é uma ótima prática para percorrer iteráveis em poucas linhas.
Conclusão
Nesse Post vimos um conceito avançado da linguagem Python: os Set Comprehensions!
Aprenda a utilizá-los bem pois isso lhe fará um verdadeiro Pythonista!
Se ficou com alguma dúvida, fique à vontade para deixar um comentário no box aqui embaixo! Será um prazer te responder!