Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Instrucciones de control Python: Listas

En los ciclos de Python, hay dos instrucciones que afectan su comportamiento, break y continue. Aunque no son imprescindibles, son comunes en la práctica y es útil conocerlas.

Break

La instrucción break produce una salida del ciclo. No de la función, sino del ciclo. Al encontrarla, el intérprete deja de ejecutar el ciclo actual y pasa a las instrucciones que siguen inmediatamente después del ciclo.

coll = ['one', 'two', 'three', 'four', 'stop', 'five']

for item in coll:
  if item == 'stop':
    break
  print(item)

# => one
# => two
# => three
# => four

Lo mismo es fácil de obtener sin break, usando un ciclo while. Este ciclo es semánticamente mejor para dicha tarea, ya que implica una iteración incompleta:

coll = ['one', 'two', 'three', 'four', 'stop', 'five']

i = 0
while coll[i] != 'stop':
  print(coll[i])
  i += 1

# => one
# => two
# => three
# => four

El ciclo while es ideal para situaciones en las que el número de iteraciones se desconozca de antemano. Por ejemplo, cuando se espera una condición para salir o cuando se busca un número primo, como en el código de arriba.

Si la condición en el ciclo while es verdadera, entonces el ciclo será infinito. Es importante recordar esto y siempre verificar la condición en este tipo de ciclo:

i = 0
# ¡Ciclo infinito! ¡Es peligroso ejecutarlo!
while True:
  print(i)
  i += 1

Cuando el número de iteraciones se conoce, es preferible usar un ciclo for. A diferencia del while, el ciclo for in se detendrá garantizadamente después de recorrer todos los elementos, incluso si no se alcanza la condición con break:

coll = ['one', 'two', 'three', 'four', 'five']
for item in coll:
  if False:
    # La condición nunca se cumplirá, pero el ciclo terminará su trabajo de todos modos
    break
  print(item)

# => one
# => two
# => three
# => four
# => five

Sin embargo, si necesitamos realizar una acción útil si la condición en el ciclo nunca se cumple, la instrucción else puede ayudar:

# La función devuelve el primer número mayor que el pasado, o None si no hay tal
def find_greater(coll, n):
  for item in coll:
    if item > n:
      # La condición nunca se cumplirá, pero de todos modos, el ciclo completará su trabajo
      result = item
      break
  else:
    result = None
  return result

find_greater([1, 12, 23], 10) # 12
find_greater([1, 12, 23], 42) # None

Continue

La instrucción continue permite omitir una iteración de ciclo. A continuación un ejemplo con la función compact(), que elimina elementos None de la lista:

def compact(coll):
  result = []
  for item in coll:
    if item is None:
      continue
    result.append(item)
  return result

compact([1, 'foo', None, 42, 'bar']) # [1, 'foo', 42, 'bar']

El código sin continue es más sencillo:

def compact(coll):
  result = []

  for item in coll:
    if item is not None:
      result.append(item)
  return result

compact([1, 'foo', None, 42, 'bar']) # [1, 'foo', 42, 'bar']

Conclusión

💡 Las instrucciones break y continue ofrecen flexibilidad en el control de las iteraciones, pero en muchos casos, es posible escribir código más simple sin ellas. Si puedes, trata de evitarlas.


Materiales adicionales

  1. Control flow 📚 La biblioteca estándar de Python

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY