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.

Recorre la lista para obtener la suma máxima de un rango determinado en Python.

Soy un traductor de documentos de IT en español. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.

Soy un novato en Python. Tengo un código en el que recorro una lista para capturar la suma máxima de números para un rango dado k. Está funcionando bien, pero quiero hacerlo más corto / óptimo. ‘k’ puede variar.

número = [100, 33, 22, 200, 333, 1000, 22]
m = 0
k = 2
sum1 = 0
temp = []
para j en el rango (len (número) – (k-1)):
para i en el rango (m, k):
temp.append (número [i])
si sum1 & lt; suma (temp):
sum1 = sum (temp)
temp = []
m + = 1
k + = 1
imprimir (sum1)

Ans: 1533 cuando k = 3
Ans: 1333 cuando k = 2

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para acortar y optimizar el código, puedes usar un enfoque de ventana deslizante. En lugar de utilizar bucles anidados, puedes usar un solo bucle para iterar a través de la lista y actualizar la suma máxima para cada rango de tamaño k. Aquí tienes un ejemplo de código que utiliza este enfoque:

    numb = [100,33,22,200,333,1000,22]
    k = 2
    max_sum = sum(numb[:k])  # inicializa max_sum con la suma de los primeros k elementos
    window_sum = max_sum
    
    for i in range(k, len(numb)):
        # actualiza la suma de la ventana y comprueba si es mayor que la suma máxima
        window_sum += numb[i] - numb[i-k]
        max_sum = max(max_sum, window_sum)
    
    print(max_sum)
    

    Este código inicializa la variable max_sum con la suma de los primeros k elementos, y luego usa un solo bucle para iterar a través de los elementos restantes de la lista. En cada iteración, actualiza la variable window_sum agregando el elemento actual y restando el elemento que se encuentra k posiciones detrás. Luego compara window_sum con max_sum y actualiza max_sum si es necesario. Finalmente, imprime max_sum después de procesar toda la lista.

    Este código es mucho más corto y eficiente que el enfoque original de bucle anidado, y puede manejar valores variables de k sin necesidad de modificar el código.

Comments are closed.