如何在Python中实现列表相邻元素和的乘积计算?
问题分析与解决方案
你的代码存在的核心问题
- 变量名大小写不匹配:定义的列表是
Lst3,但循环里误用了小写的lst3,Python大小写敏感,会直接抛出NameError。 - 初始值逻辑错误:乘法的初始值应设为1(任何数乘1都保持原值),你设成0会导致最终结果被清零;同时变量名
sum用来存储乘积,逻辑混淆易出错。 - 循环遍历逻辑错误:直接遍历列表元素
i,再用lst3[i+1]取后续元素,这仅在列表元素是连续索引值时偶然有效,一旦列表元素非数字或不连续就会报错,且最后一次循环会触发索引越界。 - 计算逻辑完全颠倒:需求是先算相邻元素的和,再将所有和相乘,但你的代码在计算相邻元素的积并求和,完全偏离目标。
正确实现代码
方法一:索引遍历(最直观)
lst = [0, 1, 2, 3, 4] result = 1 # 乘法初始值必须为1 # 遍历到倒数第二个元素,避免索引越界 for i in range(len(lst) - 1): adjacent_sum = lst[i] + lst[i+1] result *= adjacent_sum print(result) # 输出105
方法二:zip配对相邻元素(更简洁)
利用zip将原列表和它的切片lst[1:]配对,直接获取相邻元素对:
lst = [0, 1, 2, 3, 4] result = 1 for a, b in zip(lst, lst[1:]): result *= (a + b) print(result) # 输出105
方法三:functools.reduce(一行式写法)
如果偏好函数式编程风格,可使用reduce简化代码:
from functools import reduce lst = [0, 1, 2, 3, 4] result = reduce(lambda x, y: x * (y[0] + y[1]), zip(lst, lst[1:]), 1) print(result) # 输出105
额外说明
- 若列表长度小于2(空列表或单元素),可根据需求调整返回值:比如空列表返回1(乘法单位元),单元素列表无相邻元素也返回1,或抛出提示信息。
内容的提问来源于stack exchange,提问作者kerenazov
相关产品推荐
相关产品推荐

