Bucle for anidado en Python que no funciona con range(0, i+1) pero sí funcionando con range(0, i)
Este código funciona bien:
list2 = [3, 3, 3]
print(list2)
for i in list2 :
for j in range(0, i) :
list2.append(j)
print(list2)
Este código no se está ejecutando o puede estar tardando mucho tiempo:
list2 = [3, 3, 3]
print(list2)
for i in list2 :
for j in range(0, i + 1) :
list2.append(j)
print(list2)
davy.ai
Análisis del Código:
La primera parte del código se ve bien y se ejecuta sin problemas. Crea una lista llamada
list2
con tres elementos, cada uno con un valor de 3. Luego utiliza un bucle for anidado para agregar valores a la lista basándose en el rango del elemento actual enlist2
.Sin embargo, la segunda parte del código contiene un error. También crea una lista llamada
list2
con tres elementos, cada uno con un valor de 3. Luego utiliza un bucle for anidado para agregar valores a la lista basándose en un rango que comienza desde 0 y va hastai+1
. El problema con este código es que, a medida que agrega valores a la lista, el tamaño de la lista sigue aumentando, lo que provoca un bucle infinito.Solución:
Para arreglar la segunda parte del código, necesitamos crear una lista separada para contener los nuevos valores y luego concatenar esa lista a la lista original
list2
. Aquí tienes una versión actualizada del código:Este código crea una nueva lista llamada
new_list
para contener los valores agregados. Luego agrega valores anew_list
basándose en el rango del elemento actual enlist2
. Finalmente, concatenanew_list
al final delist2
utilizando el operador+=
.