Set Comprehensions no Python

Cansado de programar?

Cansado(a) de quebrar a cabeça para aprender a programar Python de verdade?

Conheça a melhor e mais completa formação de Python e Django e sinta-se um programador verdadeiramente competente. Além de Python e Django, você também vai aprender Banco de Dados, SQL, HTML, CSS, Javascript, Bootstrap e muito mais!

Quero aprender Python e Django de Verdade! Quero aprender!
Suporte

Tire suas dúvidas diretamente com o professor

Suporte

Projetos práticos voltados para o mercado de trabalho

Suporte

Formação moderna com foco na prática profissional

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}
Jornada Python Jornada Python

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? :thumbsup:

Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?

Sua assinatura não pôde ser validada.
Você fez sua assinatura com sucesso.

Assine as PyDicas e receba 30 dias do melhor conteúdo Python na sua Caixa de Entrada: direto e sem enrolação!

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:

#newsletter Olá :wave: Curtiu o artigo? Então faça parte da nossa Newsletter! Privacidade Não se preocupe, respeitamos sua privacidade. Você pode se descadastrar a qualquer momento.