首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从元组列表中累计元组索引n处的所有值?

如何从元组列表中累计元组索引n处的所有值?
EN

Stack Overflow用户
提问于 2020-10-02 04:59:36
回答 5查看 378关注 0票数 1

在下面的代码中,我希望在for循环中添加list=(0,3)、(2,6)、(1,10)的第二个参数。第一次迭代应该是3+6=9,第二次迭代应该添加前一次迭代的输出,即9到10-> 9+10=19,我想要最终的输出S=9,19。我不知道怎么做,我应该在代码中添加另一个循环吗?

代码语言:javascript
运行
复制
T=[(0,3),(2,6),(1,10)]
S=[]
for i in range(len(T)):
    b=T[0][i]+T[0][i+1]
    S.append(b)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-10-02 05:17:17

只需按以下方式修改代码

代码语言:javascript
运行
复制
T=[(0,3),(2,6),(1,10)]
S=[]
b = T[0][1]
for i in range(1,len(T)):
    b+=T[i][1]
    S.append(b)
票数 0
EN

Stack Overflow用户

发布于 2020-10-02 05:06:55

  • 使用zip将来自tuples的vales与相同的索引组合。
  • 使用赋值表达式 (来自python3.8)在清单理解中对T的第二个tuple ( T[1] )中的值进行sum
代码语言:javascript
运行
复制
T = [(0,3),(2,6),(1,10)]
T = list(zip(*T))

print(T)
[out]:
[(0, 2, 1), (3, 6, 10)]

# use an assignment expression to sum T[1]
total = T[1][0]  # 3
S = [total := total + v for v in T[1][1:]]

print(S)
[out]:
[9, 19]
票数 1
EN

Stack Overflow用户

发布于 2020-10-02 05:13:37

使用itertools.accumulate

代码语言:javascript
运行
复制
spam = [(0,3),(2,6),(1,10)]

from itertools import accumulate
print(list(accumulate(item[-1] for item in spam))[1:])

输出

代码语言:javascript
运行
复制
[9, 19]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64166369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档