"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Pueden las listas por comprensión tener iteradores dependientes?

¿Pueden las listas por comprensión tener iteradores dependientes?

Publicado el 2024-12-21
Navegar:576

 Can List Comprehensions Have Dependent Iterators?

Iteradores independientes en la comprensión de listas

En Python, las listas por comprensión permiten múltiples bucles de iteración. Considere el siguiente ejemplo:

[(x, y) for x in a for y in b]

donde a y b son secuencias. Esta comprensión crea pares de elementos a partir del producto cartesiano de a y b.

¿Pueden los iteradores ser dependientes?

¿Puede un iterador en una lista de comprensión referirse a otro? La respuesta es sí, y el siguiente código lo demuestra:

[x for x in a for a in b]

En esta comprensión, el iterador del bucle externo a se convierte en el iterador para el bucle interior. Esto efectivamente aplana una lista anidada.

Ejemplo

Si tenemos una lista anidada a:

a = [[1, 2], [3, 4]]

La siguiente lista por comprensión la aplanaría en una sola lista:

[x for x in a for a in b]

Resultado:

[1, 2, 3, 4]

Solución alternativa mediante generadores

En el código Python proporcionado, el texto se almacena como oraciones y la tarea es extraer una lista única de palabras. Así es como puedes lograr esto usando un generador:

text = (("Hi", "Steve!"), ("What's", "up?"))
gen = (word for sentence in text for word in sentence)

La variable gen ahora produce la lista simplificada de palabras:

for word in gen:
    print(word)

Salida:

Hi
Steve!
What's
up?
Último tutorial Más>

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