Python如何用for循环或更实用方法实现列表累加生成新列表
列表前缀累加的实现方案
这类从首元素开始逐次累加的需求,本质是求列表的前缀和,常见实现方式有两种:
1. 基础for循环实现
完全贴合题目逻辑,不需要依赖额外第三方库:
list_1 = [2.03898103, 2.23708741, 1.68221573, 1.12352885, 0.56227805] list_2 = [] # 维护累计变量,记录每次循环的累加值 current_total = 0 for num in list_1: current_total += num list_2.append(current_total)
运行后得到的list_2为:[2.03898103, 4.27606844, 5.95828417, 7.08181302, 7.64409107]
注意:题目示例中直接给空列表按下标赋值(如
list_2[0] = list_1[0])的写法会触发索引越界错误,空列表不存在对应下标元素,必须通过append方法追加内容。
2. 更高效简洁的标准库方法
Python标准库itertools提供的accumulate函数专门用于生成可迭代对象的前缀和序列,代码更简洁,处理大规模长列表时性能优于手动编写的循环:
from itertools import accumulate list_1 = [2.03898103, 2.23708741, 1.68221573, 1.12352885, 0.56227805] # 直接将accumulate生成的迭代器转为列表,逻辑和需求完全匹配 list_2 = list(accumulate(list_1))
该方法的输出结果和手动for循环实现完全一致。
内容的提问来源于stack exchange,提问作者Zaid Khalil
相关产品推荐
相关产品推荐

