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?
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