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.

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
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay varias formas de abordar este problema, pero una posible solución utilizando list comprehension y bucles anidados en Python es:

    a = ['h', 'ha', 'hah', 'jaja', 'kkkkk']
    resultado = [c*(2**i) for i, c in enumerate(a) for j in range(2**i)]
    print(resultado)
    

    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 en a. Para cada elemento c e índice i, generamos una nueva lista multiplicando c por 2 elevado a la potencia de i, 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 elemento c en el índice i. Dentro del bucle, simplemente agregamos el elemento actual c a una lista en ejecución llamada resultado. Finalmente, imprimimos la lista resultante.

    Este enfoque es más conciso y modular que el código original, y produce el mismo resultado.

Comments are closed.