[英]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.