Set Comprehensions no Python

Curso de Python

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 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 :wink:) 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}

:nerd_face: Quer fazer um curso COMPLETO de Python, do Básico ao Avançado, com Acesso Vitalício, Suporte individual e personalizado, com CERTIFICADO PROFISSIONAL e com 7 DIAS DE GARANTIA?

:point_right: Então clique aqui e confira nosso curso parceiro da Python Academy!


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
{0, 4, 8, 12, 16}

Se chegou até aqui é por que tá curtindo! Que tal ser avisado EM PRIMEIRA MÃO quando novos conteúdo forem postado por aqui? Aproveita e cadastra seu melhor email aqui! :point_down:

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! :wink:

Se gostou desse conteúdo, que tal fazer um CURSO COMPLETO de Python com Certificado Profissional, suporte individual e personalizado e 7 dias de garantia? :point_down:

Curso de Python

Gostou do conteúdo? Compartilha aí!