如何自定义函数实现两个列表同索引元素求和(禁用zip、map)
当然可以用自定义函数实现两个列表同索引元素求和的功能!我来给你展示几种靠谱的写法,顺便帮你排查下可能导致输出为1的问题~
自定义函数实现同索引列表求和
方法1:基础循环遍历索引
这是最直观的写法,适合刚接触自定义函数的场景:
def sum_corresponding_elements(list_a, list_b): # 先初始化一个空列表用来存结果 summed_list = [] # 假设两个列表长度一致,如果需要处理长度不同的情况,可以额外加判断 for idx in range(len(list_a)): summed_list.append(list_a[idx] + list_b[idx]) return summed_list # 测试用例 list1 = [1, 2, 3] list2 = [4, 5, 6] print(sum_corresponding_elements(list1, list2)) # 输出:[5, 7, 9]
方法2:结合zip简化代码
既然你已经了解zip的用法,用它来配对元素能让代码更简洁:
def sum_corresponding_elements(list_a, list_b): # 用列表推导式直接生成结果列表 return [x + y for x, y in zip(list_a, list_b)] # 同样测试 list1 = [1, 2, 3] list2 = [4, 5, 6] print(sum_corresponding_elements(list1, list2)) # 输出:[5, 7, 9]
为什么你得到的是1?
你提到输出结果是1,大概率是自定义函数的逻辑出了问题,没有正确收集每一对元素的和。举几个可能的错误场景:
- 函数里没有用列表收集结果,而是最后只返回了某个单个值(比如误写了索引、或者循环里覆盖了变量但没追加到列表)
- 不小心把求和逻辑写成了判断条件(比如误加了
==之类的比较运算符,导致返回布尔值True也就是1)
只要确保函数的核心逻辑是遍历每一对同索引元素,把它们的和逐个加入结果列表,最后返回整个列表,就能得到你想要的[5,7,9]啦。
内容的提问来源于stack exchange,提问作者user1586957
相关产品推荐
相关产品推荐

