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

时间:2017-12-03 16:04:17

标签: python list sum

我无法使用搜索功能找到答案,所以我开始这个帖子。

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

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

在这种情况下,示例x将为3。

现在我想用

创建一个新列表
len(onetonine)/x

元素,这意味着3个元素。

重要的是,我希望新列表的元素是旧列表的每个x元素的总和。 这意味着:

newlist = [6, 15, 24]

所以基本上把我原来列表中的x = 3个元素添加起来。重复直到完成。

我无法为此找到合适的解决方案,所以我正在寻求帮助。

谢谢。

5 个答案:

答案 0 :(得分:6)

以下列表对适当切片总和的理解将起作用:

from datetime import datetime
time_stamp = ['2017:02:01:14:44:00', '2017:02:01:14:44:01']
time_stamp = [datetime.strptime(i, '%Y:%m:%d:%H:%M:%S') for i in time_stamp]
print(time_stamp)

注意:如果原始列表的长度不能被块长度整除,只是添加最后(较短)块的总和,这将不会丢弃任何休息。

答案 1 :(得分:4)

使用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]

答案 2 :(得分:0)

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

P.S。:我很高兴它有效,现在开发:)

答案 3 :(得分:0)

我赞成了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!'

答案 4 :(得分:0)

您也可以使用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]
相关问题