如何用Python实现动态长度列表的循环乘积求和功能?
Python实现方案
问题描述
给定任意长度(最大可达100)的列表,需按如下规则计算输出结果:将列表中每个元素与下一个元素相乘,最后一个元素与第一个元素相乘,将所有乘积求和后放入列表中。
示例:
l1 = [2,3,4] → output = [26](计算式:23 + 34 + 42)
l2 = [3,4,5,7,8,3] → output = [156](计算式:34 + 45 +57 +78 +83 +3*3)
实现代码
def calculate_cyclic_product_sum(input_list): if not input_list: return [] total = 0 list_length = len(input_list) for idx in range(list_length): # 用取模运算实现循环关联,最后一个元素对应第一个元素的索引 total += input_list[idx] * input_list[(idx + 1) % list_length] return [total] # 测试示例 l1 = [2, 3, 4] print(calculate_cyclic_product_sum(l1)) # 输出 [26] l2 = [3, 4, 5, 7, 8, 3] print(calculate_cyclic_product_sum(l2)) # 输出 [156]
代码说明
- 利用
(idx + 1) % list_length实现循环逻辑:当遍历到最后一个元素时,取模运算会返回第一个元素的索引,自动完成最后一个元素与第一个元素的相乘操作。 - 加入空列表判断,避免索引错误,返回空列表作为合理输出。
- 支持任意长度的输入列表,包括长度为1的场景(此时元素与自身相乘,结果为
[元素值的平方])。
内容的提问来源于stack exchange,提问作者TRex
相关产品推荐
相关产品推荐

