es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bucle for en Python con corchetes vs paréntesis

Hace algunos meses comencé a aprender Python3. Tenía curiosidad sobre la diferencia entre el siguiente código y cuándo usarlo.

A:

for i in [x*2 for x in range(100)]:
    if i == 2:
        break

B:

for i in (x*2 for x in range(100)):
    if i == 2:
        break

Entonces, el primero (A) está entre corchetes y el segundo (B) está entre paréntesis “normales”.
¿Cuál es la diferencia entre ellos y cuál es preferiblemente mejor en este tipo de caso?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La diferencia entre A y B es que A utiliza comprensión de listas para crear una lista de valores antes de iterar a través de ella con un bucle for, mientras que B utiliza una expresión generadora para crear valores sobre la marcha mientras se iteran con un bucle for.

    En términos de rendimiento, la expresión generadora en B es más eficiente en memoria porque solo genera valores según sea necesario, mientras que la comprensión de lista en A genera todos los valores de una vez en memoria. Sin embargo, en este caso específico, la diferencia es insignificante ya que solo se genera un pequeño rango de valores.

    Por lo tanto, en términos de legibilidad y simplicidad, tanto A como B se pueden usar indistintamente. Sin embargo, si la eficiencia de memoria es una preocupación para conjuntos de datos más grandes, B (expresiones generadoras) sería más preferible que A (comprensión de listas).

Comments are closed.