Dos bucles for en una comprensión de lista producen una salida extraña en Python.
He escrito este código:
l1 = [1, 2, 3, 4]
l2 = [5, 6, 7, 8]
que da como resultado esto:
[1, 1, 1, 1, 4, 4, 4, 4, 9, 9, 9, 9, 16, 16, 16, 16]
Mi pregunta es, ¿qué sucede dentro de esta comprensión de lista? ¿Por qué se multiplica la cantidad de elementos en l1
por la longitud de l2
? No traducir el código y la salida en markdown.
davy.ai
La comprensión de lista itera sobre todos los valores de
x
enl1
y todos los valores dey
enl2
. Sin embargo, la variabley
no se utiliza en la expresión dentro de la comprensión de lista, por lo que se ignora efectivamente. Para cada valor dex
, se evalúa la expresiónx**2
, lo que resulta en una lista de valores al cuadrado paral1
. Dado que la comprensión de lista tiene dos buclesfor
, este proceso se repite para todos los valores dey
enl2
. La lista final contiene los valores al cuadrado paral1
repetidos 4 veces, ya quel2
tiene una longitud de 4. Por lo tanto, la longitud de la lista final es igual a la longitud del1
multiplicada por la longitud del2
, que es 16 en este caso.