簡體   English   中英

Python:在列表中對x元素求和

[英]Python: Summing x elements in a list

我無法使用搜索功能找到答案,所以我開始這個帖子。

考慮使用可由x划分的列表。 例如:

onetonine = [1,2,3,4,5,6,7,8,9]

在這種情況下,示例x將為3。

現在我想創建一個新的列表

len(onetonine)/x

元素,這意味着3個元素。

重要的是,我希望新列表的元素是舊列表的每個x元素的總和。 這意味着:

newlist = [6, 15, 24]

因此,基本上采用舊列表中的x = 3個元素並添加它們。 重復直到完成。

我無法為此獲得有效的解決方案,所以我正在尋求幫助。

謝謝。

以下列表對適當切片總和的理解將起作用:

>>> [sum(onetonine[i:i+3]) for i in range(0, len(onetonine), 3)]
[6, 15, 24]

注意:如果原始列表的長度不能被塊長度整除,只是添加最后(較短)塊的總和,這將不會丟棄任何休息。

使用zip(*([iter(onetonine)]*3))將列表拆分為3個子列表

onetonine = [1,2,3,4,5,6,7,8,9]
[sum(i) for i in zip(*([iter(onetonine)]*3))]
#[6, 15, 24]
def group_sums(lst, x): # use better name, no idea for me
    new = []
    for i in range(len(lst)//x):
        new.append(sum(lst[i*x:i*x+x]))
    return new

PS:我很開心它現在開發了吧:)

我贊成了schwobaseggl,但有類似的事情繼續下去。

我們還可以檢查mod是否等於0:

x = 3

if len(onetonine) % x == 0:
    result = [sum(onetonine[i:i+x]) for i in range(0, len(onetonine), x)]
else:
    result = 'Error!'

你也可以使用map

onetonine = [1,2,3,4,5,6,7,8,9]

newList = list(map(lambda index: sum(onetonine[index:index+3]), range(0,len(onetonine),3)))
print(newList)

輸出:

[6, 15, 24]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM