Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Sobre o List Comprehension

Eu acho essa sintaxe do list comprehesion muito poderosa, mas ia ser tão legal se desse para adicionar o else na filtragem. É possível?

3 respostas
solução!

Olá Yuri, tudo bem?

Realmente, o List Comprehension é uma sintaxe muito poderosa do Python e pode facilitar bastante a manipulação de listas e tuplas. Quanto à sua pergunta, é possível sim adicionar o else na filtragem do List Comprehension. Para isso, basta utilizar a sintaxe "if" e "else" na ordem inversa.

Por exemplo, suponha que você queira criar uma lista com os números pares de 0 a 10, mas também quer incluir o número 11 caso ele seja par. Você pode fazer isso da seguinte forma:

numeros = [x if x % 2 == 0 else 11 for x in range(12)]

Nesse caso, o List Comprehension verifica se o número é par com o "if x % 2 == 0", e se for, adiciona o próprio número "x" à lista. Caso contrário, adiciona o número 11 à lista. Note que o "if" vem antes do "else" nessa sintaxe.

Em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

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

Obrigado! :3

Grande Yuri. Tudo certo?

A list comprehension, realmente é muito poderosa, mas como já dizia um velho ditado "Com grandes poderes, vem grandes responsabilidades!". Rsrsrsrsrsrs. Bom a list comprehension é mais indicada quando se deseja criar uma lista em Python usando apenas uma linha e isso é realmente excelente. O problema é que quanto maior for a quantidade de itens na lista mais demorado vai ser o processo e, naturalmente, vai demandar um certo custo computacional. Em algumas situações chega até a ser mais demorada do que usando o laço de repetição for. Agora imagine essa lista com muitos itens e nessas iterações precisar filtrar algo através de uma condicional simples! E se acrescentarmos uma outra opção a essa condicional, quanto tempo levaria para gerar uma lista com muitos itens? Imagino que seja por isso que ainda não implementaram de forma nativa o else em uma list comprehension, mas creio que dê, apesar de nunca ter tentado. Basta ser curioso e dar uma olhada na documentação do Python para ver a implementação e ver se tem jeito. Achei interessante a pergunta, mas nunca tentei fazer isso. Agora eu confesso que me despertou a curiosidade. Bom é isso aí...