如何根据lenwords的n值对numlist连续元素求和生成sumlist并关联upperlist?
解决方法
核心是通过一个索引指针,按lenwords里的每个长度值,依次从numlist中截取对应长度的连续元素段求和,具体步骤如下:
- 初始化一个索引变量,用来记录当前在
numlist中的起始位置 - 遍历
lenwords中的每个长度值n:- 从
numlist的当前索引位置开始,截取长度为n的子列表 - 计算这个子列表的和,添加到
sumlist中 - 将索引指针向后移动
n位,处理下一段元素
- 从
- 最后用
zip()把sumlist和upperlist打包成目标元组列表
完整代码示例
numlist = [0,4,0,4,0,4,0,0,4,0,4] upperlist = ['EF','FA','FE','FY','IF','OF'] lenwords = [2,2,2,2,2,2] sumlist = [] current_index = 0 for n in lenwords: # 截取当前段并求和 segment_sum = sum(numlist[current_index:current_index + n]) sumlist.append(segment_sum) # 移动索引到下一段起始位置 current_index += n # 打包成目标元组列表 ziplist = list(zip(sumlist, upperlist)) print(ziplist)
运行这段代码后,输出结果就是:
[(4, 'EF'), (4, 'FA'), (4, 'FE'), (4, 'FY'), (4, 'IF'), (4, 'OF')]
只要lenwords的长度和upperlist一致,且numlist的总长度等于lenwords所有元素的和,这个方法就能正常运行。
内容的提问来源于stack exchange,提问作者Juliana Gómez
相关产品推荐
相关产品推荐

