如何用循环或函数计算列表元素两两累加和(禁用sum()函数)
实现列表元素的两两累加求和
需求说明
要求对列表中的元素进行两两累加求和,例如列表[1,2,3]的计算逻辑为(1+3)+(2+1)+(3+2)(等价于所有无序两两组合的和相加),最终输出结果为12。禁止使用sum()函数或直接硬编码逐项相加的方式。
方法1:嵌套循环实现(直观版)
通过两层循环遍历列表中的每个元素对,当两个元素不是同一个位置的元素时,将它们的和累加到总结果中。这种方式完全符合循环实现的要求,逻辑清晰易懂。
def pairwise_sum(lst): total = 0 # 遍历每个元素的索引 for i in range(len(lst)): # 遍历所有元素的索引 for j in range(len(lst)): # 跳过自身与自身的组合 if i != j: total += lst[i] + lst[j] return total # 测试示例 test_list = [1, 2, 3] print(pairwise_sum(test_list)) # 输出:12
方法2:数学优化版(高效循环实现)
观察规律可以发现:每个元素会和列表中其余n-1个元素各相加一次(n为列表长度),因此总结果等于列表所有元素的总和乘以n-1。我们可以用循环先计算元素总和(不使用sum()),再进行乘法运算,时间复杂度从O(n²)优化到O(n)。
def pairwise_sum(lst): # 循环计算元素总和,避免使用sum() element_total = 0 for num in lst: element_total += num # 计算总结果 return element_total * (len(lst) - 1) # 测试示例 test_list = [1, 2, 3] print(pairwise_sum(test_list)) # 输出:12
内容的提问来源于stack exchange,提问作者erday
相关产品推荐
相关产品推荐

