Comprensión de listas con if/else: sintaxis y uso
Cuando se trabaja con listas por comprensión en Python, se suele incorporar lógica if/else para manejar operaciones condicionales. Este artículo aborda la sintaxis correcta para tales escenarios.
Una tarea común es crear una lista basada en una secuencia fuente, con el siguiente bucle for que contiene una construcción if/else:
results = [] for x in xs: results.append(f(x) if x is not None else '')
Este código agrega '' a la lista de resultados si x es Ninguno y, de lo contrario, calcula f(x). El resultado deseado también se puede lograr usando una lista por comprensión, pero con un ajuste necesario en la sintaxis:
results = [f(x) if x is not None else '' for x in xs]
La diferencia clave radica en el orden de las cláusulas if y else dentro de la lista de comprensión. La sintaxis correcta requiere colocar la cláusula if antes de la parte for, seguida de la cláusula else.
En general, la sintaxis para una lista por comprensión con una condición if/else es:
[f(x) if condition else g(x) for x in sequence]
Para listas por comprensión que involucran solo condiciones if para filtrar elementos de la secuencia fuente, la sintaxis es:
[f(x) for x in sequence if condition]
Tenga en cuenta que las expresiones condicionales, utilizadas en la sintaxis if/else de las listas por comprensión, son distintas de la construcción if empleada para filtración. Las expresiones condicionales permiten elegir entre dos expresiones basadas en una condición, similar al operador ternario ?: que se encuentra en otros idiomas. Por ejemplo:
value = 123 print(value, 'is', 'even' if value % 2 == 0 else 'odd')
Este ejemplo imprime si el valor es par o impar usando una expresión condicional.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3