我无法使用搜索功能找到答案,所以我开始这个帖子。
考虑使用可由x划分的列表。 例如:
onetonine = [1,2,3,4,5,6,7,8,9]
在这种情况下,示例x将为3。
现在我想用
创建一个新列表len(onetonine)/x
元素,这意味着3个元素。
重要的是,我希望新列表的元素是旧列表的每个x元素的总和。 这意味着:
newlist = [6, 15, 24]
所以基本上把我原来列表中的x = 3个元素添加起来。重复直到完成。
我无法为此找到合适的解决方案,所以我正在寻求帮助。
谢谢。
答案 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]