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?
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!