Python:计算列表中 x 个元素的总和

3

我发现使用搜索功能无法找到答案,因此我开始了这个帖子。

考虑一下有一个可以被x整除的列表。

例如:

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

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

现在我想创建一个新列表,其中包含

len(onetonine)/x

这里涉及到元素,也就是3个元素。

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

newlist = [6, 15, 24]

基本上是取旧列表中的x=3个元素并将它们相加。重复直到完成。
我无法得到一个可行的解决方案,所以我正在寻求帮助。
谢谢。

请参见以下链接:https://dev59.com/VHRC5IYBdhLWcg3wCMc6 或 https://dev59.com/qW865IYBdhLWcg3wFqjY - FelixEnescu
5个回答

6
以下的列表推导式可以计算出适当切片的总和:
>>> [sum(onetonine[i:i+3]) for i in range(0, len(onetonine), 3)]
[6, 15, 24]

注意:如果原始列表的长度不可被块长度整除,则不会丢弃任何剩余部分,而只是添加最后(较短)块的总和。

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]

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

附言:我很高兴它能够工作,现在刚刚开发完成:)


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!'

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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接