another_list = [(i*7 + 5) % 13 if i%2==0 else (i*5 + 7) % 23 for i in range(10) ]
Olá, por que o código acima o if vem antes e o for depois. E no código abaixo ocorre o contrário?
numeros = [1,2,3,4,5]
pares = [x for x in numeros if x%2==0 ]
another_list = [(i*7 + 5) % 13 if i%2==0 else (i*5 + 7) % 23 for i in range(10) ]
Olá, por que o código acima o if vem antes e o for depois. E no código abaixo ocorre o contrário?
numeros = [1,2,3,4,5]
pares = [x for x in numeros if x%2==0 ]
Olá Rogério, tudo bem? Espero que sim!
No primeiro código existem duas opções de valores para a lista, caso o i seja par, o valor da lista será (i * 7 + 5) % 13. Caso seja ímpar, o valor da lista será (i * 5 + 7) % 23. Quando há mais de uma opção para o valor a depender de uma condição, o if e else devem ser colocados ao mesmo tempo logo no início do list comprehension. Caso seja uma condição que vale para todos os valores da lista, o if é colocado ao final, depois do for.
É apenas uma questão de sintaxe. Você não consegue colocar apenas o if no início, vai ser retornado um erro solicitando o else também.
Bons estudos!
Oi, tinha entendido tudo até o trecho: "É apenas uma questão de sintaxe". Afinal, é possível, quando há mais de uma opção para o valor, por o if e else no final, ou eles devem, obrigatoriamente, ficar no inicio?
Olá Rogério, o else não pode ser colocado ao final, também dará um erro. Portanto, caso queira utilizar if e else, devem ser colocados no início, para ter mais de uma opção para o valor que será colocado na lista.
Caso a condição seja apenas uma condição, deverá ser colocado após o for.