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