Compreensão de lista com if/else: sintaxe e uso
Ao trabalhar com compreensões de lista em Python, é encontrado incorporar lógica if/else para lidar com operações condicionais. Este artigo aborda a sintaxe correta para tais cenários.
Uma tarefa comum é criar uma lista baseada em uma sequência de origem, com o seguinte loop for contendo uma construção if/else:
results = [] for x in xs: results.append(f(x) if x is not None else '')
Este código anexa '' à lista de resultados se x for None e, caso contrário, calcula f(x). O resultado desejado também pode ser alcançado utilizando uma compreensão de lista, mas com um ajuste necessário na sintaxe:
results = [f(x) if x is not None else '' for x in xs]
A principal diferença está na ordem das cláusulas if e else na compreensão da lista. A sintaxe correta requer colocar a cláusula if antes da parte for, seguida pela cláusula else.
Em geral, a sintaxe para uma compreensão de lista com uma condição if/else é:
[f(x) if condition else g(x) for x in sequence]
Para compreensões de lista envolvendo apenas condições if para filtrar elementos da sequência de origem, a sintaxe é:
[f(x) for x in sequence if condition]
Observe que as expressões condicionais, usadas na sintaxe if/else de compreensões de lista, são distintas da construção if empregada para filtragem. As expressões condicionais permitem escolher entre duas expressões com base em uma condição, semelhante ao operador ternário ?: encontrado em outras linguagens. Por exemplo:
value = 123 print(value, 'is', 'even' if value % 2 == 0 else 'odd')
Este exemplo imprime se o valor é par ou ímpar usando uma expressão condicional.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3