Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Compreensão de lista

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?

1 resposta
solução!

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!