Na compreensão de lista na Aula 5 de Python 3 parte 2, é possível usar o while ou if da mesma no ato da inicialização da variável? É possível também fazer essa compreensão na tupla ou em outras estrutura de dados ou coleções?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Na compreensão de lista na Aula 5 de Python 3 parte 2, é possível usar o while ou if da mesma no ato da inicialização da variável? É possível também fazer essa compreensão na tupla ou em outras estrutura de dados ou coleções?
Olá Bruno, boa tarde!
É possível utilizar esse recurso em conjuntos e dicionários, exemplo:
lista = [1, 2, 3, 4]
conjunto = {x for x in lista}
print('conjunto: {}'.format(conjunto))
dicionario = {x: x*2 for x in lista}
print('dicionario: {}'.format(dicionario))Que vai gerar a saída:
conjunto: {1, 2, 3, 4}
dicionario: {1: 2, 2: 4, 3: 6, 4: 8}Também podemos utilizar o comando if, exemplo:
minha_lista = list(i for i in range(10) if i*i < 30)
print('minha lista: {}'.format(minha_lista))Que gera a saída:
minnha lista: [0, 1, 2, 3, 5]Não é possível utilizar o comando while diretamente neste recurso. Mas você pode usar um recurso do módulo itertools chamado de takewhile quese comporta de forma parecida:
import itertools
minha_lista = [i for i in itertools.takewhile(lambda x: x*x<30, range(10))]
print('minha lista: {}'.format(minha_lista))Que vai gerar a saída:
minha lista: [0, 1, 2, 3, 4, 5]Para saber mais, você pode acessar a documentação sobre list comprehensions aqui .
Espero ter ajudado e bons estudos!