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

Dúvida sobre as funcionalidades do List Comprehension

Olá.

Tentei procurar sobre, porém não consegui achar sobre.

Gostaria de saber se é possível usar um if/esle juntamente com um for em um List Comprehension.

O objetivo seria fazer o jogo da forca proposto pelo curso "Python: avançando na linguagem" com uma frase, e fazendo a lista de caracteres "_" ter seus devidos espaços.

palavra_secreta = "Frase composta".upper()

lista_teste = [" " for letra in palavra_secreta if letra == " " else "_"]

Algo nesse estilo.

Claro que o código não funciona.

1 resposta
solução!

Oii Lucas, tudo bem?

Quando queremos utilizar o condicional if e else dentro de uma compreensão de lista, por padrão, essa condição deve vir em primeira instância, como mostro abaixo:

[x if <condição_um> else <condição_dois> for <item> in <lista>]

No seu exemplo, se alterarmos a ordem que a condicional foi colocada, teremos o resultado esperado:

palavra_secreta = "Frase composta".upper()
lista_teste = [" " if letra == " " else "_" for letra in palavra_secreta]
print(lista_teste)

Resultado:

['_', '_', '_', '_', '_', ' ', '_', '_', '_', '_', '_', '_', '_', '_']

Porém, quando temos apenas o condicional if, por padrão, ele virá após o laço de repetição:

[x  for <item> in <lista> if <condição>]

Exemplo onde queremos selecionar apenas os números pares da lista.

lista_numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9]

numeros_pares = [par for par in lista_numeros if par % 2 == 0]

Resultado:

[2, 4, 6, 8]

Caso queira mergulhar ainda mais nesse assunto, recomendo o seguinte artigo:

O artigo está em inglês, mas caso tenha dificuldade com o idioma, recomendo o uso do tradutor do navegador.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!