Imprimiendo cada elemento en una lista el doble de la cantidad del anterior.
Hola, soy un poco novato. Estoy tratando de hacer que el programa imprima cada elemento el doble de veces que el elemento anterior, comenzando con una vez. Encontré una solución, pero parece poco elegante. ¿Existe una mejor versión? Aquí está el código.
a = ['h', 'ha', 'hah', 'jaja', 'kkkkk']
s = .5
for x in range(len(a)):
s = int(s * 2)
n = 1
for j in range(s):
print(str(n) + str(a[x]))
n += 1
davy.ai
Hay varias formas de abordar este problema, pero una posible solución utilizando list comprehension y bucles anidados en Python es:
Aquí, utilizamos list comprehension para generar el resultado deseado. La función
enumerate
nos permite iterar tanto sobre los elementos como sobre sus índices correspondientes ena
. Para cada elementoc
e índicei
, generamos una nueva lista multiplicandoc
por 2 elevado a la potencia dei
, es decir,c*(2**i)
. Esto se encarga de la duplicación.Para generar las repeticiones, utilizamos otro bucle anidado que se ejecuta
2**i
veces para cada elementoc
en el índicei
. Dentro del bucle, simplemente agregamos el elemento actualc
a una lista en ejecución llamadaresultado
. Finalmente, imprimimos la lista resultante.Este enfoque es más conciso y modular que el código original, y produce el mismo resultado.