in

python – si / si no en una lista de comprensión

apple touch icon@2

Usemos esta pregunta para repasar algunos conceptos. Creo que es bueno ver primero los fundamentos para que pueda extrapolar a diferentes casos.

Otras respuestas proporcionan la respuesta específica a su pregunta. Primero daré un contexto general y luego responderé la pregunta.

if/else Las declaraciones en las listas por comprensión implican dos cosas:

  • Lista de comprensiones
  • Expresiones condicionales (operadores ternarios)

1. Enumere las comprensiones

Ellos proveer una forma concisa de crear listas.

Su estructura consta de: «corchetes que contienen una expresión seguida de una cláusula for, luego cero o más cláusulas for o if«.

Caso 1

Aquí no tenemos ninguna condición. Cada elemento del iterable se agrega a new_list.

new_list = [expression for item in iterable]
new_list = [x for x in range(1, 10)]
> [1, 2, 3, 4, 5, 6, 7, 8, 9]

Caso 2

Aquí tenemos una condición.

Ejemplo 1

Condición: solo incluso se agregarán números a new_list.

new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range(1, 10) if x % 2 == 0]
> [2, 4, 6, 8]

Ejemplo 2

Condición: solo incluso los números que son múltiplos de 3 se sumarán a new_list.

new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range(1, 10) if x % 2 == 0 if x % 3 == 0]
> [6]

Pero cmo es que tenemos una condicin si usamos dos if en new_list?

La expresión anterior podría escribirse como:

new_list = [x for x in range(1, 10) if x % 2 and x % 3 == 0]
> [6]

Solo usamos uno if declaración.

Esto es como hacer:

new_list = []
for x in range(1, 10):
    if x % 2 == 0 and x % 3 == 0:
        new_list.append(x)
> [6]

Ejemplo 3

Solo por el bien de la discusión, también puede usar or.

Condición: incluso se sumarán números o números múltiplos de 3 new_list.

new_list = [x for x in range(1, 10) if x % 2 == 0 or x % 3 == 0]
> [2, 3, 4, 6, 8, 9]

Caso 2

Más de una condición:

Aquí necesitamos la ayuda de expresiones condicionales (operadores ternarios).

2. Expresiones condicionales

¿Qué son las expresiones condicionales? Lo que dice el nombre: una expresión de Python que tiene alguna condición.

<Exp1> if condition else <Exp2>

Primero el condition se evalúa. Si condition es True, luego <Exp1> se evalúa y devuelve. Si condition es False, luego <Exp2> se evalúa y devuelve.

Una expresión condicional con más de una condición:

<Exp1> if condition else <Exp2> if condition else <Exp3>...    

Un ejemplo de Python real:

age = 12
s="minor" if age < 21 else 'adult'
> minor

El valor de s está condicionado a age valor.

3.Enumere las comprensiones con condicionales

Juntamos listas comprensivas y condicionales de esta manera.

new_list = [<Conditional Expression> for <item> in <iterable>]

new_list = [<Exp1> if condition else <Exp2> if condition else <Exp3> for <item> in <iterable>]

Condición: incluso los números se agregarán como 'even', el número tres se agregará como 'number three' y el resto se agregará como 'odd'.

new_list = ['even' if x % 2 == 0 else 'number three' if x == 3 else 'odd' 
             for x in range(1, 10)]
> ['odd', 'even', 'number three', 'even', 'odd', 'even', 'odd', 'even', 'odd']

row = [unicode(x.strip()) for x in row if x is not None else '']

Aquí tenemos un problema con la estructura de la lista: for x in row debe estar al final de la expresión.

Manera correcta:

new_row = [unicode(x.strip()) if x is not None else '' for x in row]

Otras lecturas:

¿Python tiene un operador condicional ternario?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Python: tipos de variables

gfg 200x200 min

Algoritmos – GeeksforGeeks