循環遍歷列表以獲取python中給定範圍的最大總和

阿克謝·杜德瓦德卡

我是python的新手。我有一個代碼,我循環遍歷一個列表來捕獲給定範圍 k 的最大數字總和。它工作正常,但我希望它更短/最佳。“k”可能會有所不同

numb = [100,33,22,200,333,1000,22]
m=0
k=2
sum1=0
temp=[]
for j in range(len(numb)-(k-1)):
   for i in range(m,k):
     temp.append(numb[i])
   if sum1 < sum(temp):
     sum1 = sum(temp)
   temp=[]
   m+=1
   k+=1
print(sum1)

答案:當 k = 3 時為 1533 答案:當 k = 2 時為 1333

托馬斯·梅隆德

您可以先將第一個k數字相加。那是您的起始金額和您當前的最大值。然後沿著列表運行一個滑動窗口,添加下一個數字並刪除超出窗口的那個。

def sum_k(x, k):
    m = s = sum(x[:k])
    for i, a in enumerate(x[k:]):
        b = x[i]  # number to remove
        s += a - b
        m = max(m, s)
    return m


numb = [100, 33, 22, 200, 333, 1000, 22]
print(sum_k(numb, 2), sum_k(numb, 3))

這在線性時間內運行,這是最佳的,因為您至少需要查看輸入中的每個元素。

i循環中的索引 ,運行從零到n-k-1,因此雖然我們枚舉了x[k:]我們選擇的索引來自x[0:],所以當我們選擇時,b我們正在選擇超出窗口的數字。同時,a是進來的新號碼。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

循環遍歷 Python 中的列表列表

在布爾列表中獲取 True 值的範圍(開始和結束)(不使用 for 循環)

循環遍歷一個列表並在 python 中獲取一個具有相同值的起始索引的新列表

獲取for循環中數字的總和

獲取列表的元素或列表的索引,同時“for”在範圍內循環

如何使用基於範圍的“for”循環遍歷不同類型的地圖集合?

For循環遍歷兩個列表python

循環遍歷列表中的嵌套字典

如何在嵌套的 for 循環中遍歷列表和字典

使用 Python 和 Pandas 循環遍歷列

當時間戳不正確時,在python中獲取給定時間範圍的數據

循環遍歷 JSON 數組以獲取隨機值(Javascript)

獲取循環階乘的總和

如何在 Kotlin 的循環中逐步遍歷固定範圍,其中每次迭代的步長值都會發生變化

如果滿足特定條件,則循環遍歷範圍並刪除行

遍歷每個可能的列表範圍

循環遍歷對象並根據給定數組中的正則表達式替換值

循環遍歷列表並從頭開始

循環遍歷尚未初始化的列表

循環遍歷列表以提取特定模式

遍歷列表循環錯誤幫助 - Yfinance

循環遍歷 Excel Power Query 中的 Json 列表以檢索記錄

循環遍歷列表作為 R 中 filter() 函數的輸入

循環遍歷數組和數據幀

for 循環是否遍歷 Lua 和 Love2d 中的空表?

Python 同時循環遍歷 2 個文件

循環遍歷動態表 - python

Python3:循環遍歷字符串

如何循環遍歷 csv 文件中的特定 ID?