You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:55:18