Python如何计算列表中每隔一位元素的累加总和
隔位累加场景的Python实现与循环选型
给定示例列表[10,20,30,40,50,60],需求为累加序列中从1开始计数的第2、4、6位元素,参考计算逻辑为20+40+60=120,对应Python列表的索引值为1、3、5。
最简实现代码
Python内置的列表切片可以快速定位目标元素,配合sum()方法即可一步完成计算:
source_list = [10,20,30,40,50,60] # 切片规则:从索引1开始,步长为2取元素,直接求和 total = sum(source_list[1::2]) print(total) # 输出结果120
注意:这里的位置计数是从1开始的,对应Python列表从0起始的索引规则,不要错把目标位置对应成索引0、2、4,否则计算结果会变成
10+30+50=90,和需求不符。
两种循环结构的实现对比
如果需要通过循环逻辑手动实现累加(而非直接调用内置求和方法),两种循环写法如下:
for循环实现
source_list = [10,20,30,40,50,60] total = 0 # 直接遍历切片得到的目标元素集合,无需手动维护索引 for num in source_list[1::2]: total += num print(total) # 输出结果120
while循环实现
source_list = [10,20,30,40,50,60] total = 0 # 手动维护起始索引、步长、终止判断条件 current_index = 1 while current_index < len(source_list): total += source_list[current_index] current_index += 2 print(total) # 输出结果120
循环选型建议
- 该场景下优先选择for循环结构:需求的遍历范围、步长都是提前确定的,没有需要动态判断的终止条件,for循环写法简洁直观,不需要手动维护索引值,能大幅降低索引越界、步长写错的概率。
- while循环虽然能完成功能,但需要手动绑定起始位置、自增步长、列表长度的边界判断,代码冗余度更高,更适合遍历长度未知、需要根据循环中途的运行状态决定是否终止的场景,和当前固定范围遍历的需求匹配度较低。
内容的提问来源于stack exchange,提问作者Ffr Drr
相关产品推荐
相关产品推荐

