¿Cómo puedo restarle uno a cada elemento para generar una lista que contenga solo ceros? Intenté resolverlo de forma recursiva.
Si tengo una lista, ¿cómo puedo restarle uno a cada elemento de forma recursiva? Implementé este código.
lista = [5,4,3,2,1,1]
nivel = lista[0]
def list_arrays(numeros):
if len(numeros) - 1 < nivel:
print("nograph")
else:
for i in range(len(numeros)):
numeros[i] = numeros[i] - 1
print(numeros)
La salida debería ser así:
> [4,3,2,1,0,0]
> [3,2,1,0,0,0]
> [2,1,0,0,0,0]
> [1,0,0,0,0,0]
Pero solo se muestra el primer arreglo.
> [4,3,2,1,0,0]
davy.ai
Para hacer que el código funcione de manera recursiva, es necesario llamar a la función nuevamente con la lista actualizada hasta que se cumpla el caso base donde todos los elementos son iguales a 0. Aquí tienes un código actualizado que lo hace:
La salida será:
Explicación:
all(x == 0 for x in numbers)
verifica si todos los elementos ennumbers
son iguales a 0, si es así, se detiene la recursión.new_numbers
se asigna a una nueva lista, donde cada elemento se resta en 1.list_arrays(new_numbers)
llama a la función nuevamente con la lista actualizada hasta que se cumpla el caso base.