如何基于原嵌套列表通过逐行连续减法生成新嵌套列表?
实现嵌套列表的逐行连续减法
核心思路
结果列表第一行直接复用原列表第一行;从第二行开始,每一行的元素都是结果列表上一行的对应元素减去原列表当前行的对应元素,依次完成所有行的计算。
Python 实现代码
def cumulative_subtract(input_list): # 处理空输入的边界情况 if not input_list: return [] # 初始化结果列表,复制第一行避免修改原列表 result = [input_list[0].copy()] # 从第二行开始遍历计算 for i in range(1, len(input_list)): prev_result_row = result[-1] original_current_row = input_list[i] # 逐元素相减生成新行 new_row = [prev_result_row[j] - original_current_row[j] for j in range(len(prev_result_row))] result.append(new_row) return result # 测试示例 original_list = [[70,70,70,70],[1,1,1,1],[2,2,2,2],[4,4,4,4]] print(cumulative_subtract(original_list)) # 输出: [[70, 70, 70, 70], [69, 69, 69, 69], [67, 67, 67, 67], [63, 63, 63, 63]]
代码说明
- 边界处理:先判断输入列表是否为空,避免后续索引报错
- 第一行初始化:用
copy()复制原列表第一行,防止后续操作意外修改原列表数据 - 逐行计算:循环遍历原列表从第二行开始的元素,每次取结果列表的最后一行(上一步计算结果),和当前原列表行逐元素相减,生成新行加入结果列表
- 通用性优化:用
len(prev_result_row)代替固定的4,确保子列表列数变化时代码依然可用(只要所有子列表长度一致)
内容的提问来源于stack exchange,提问作者Nicolas Cesarini
相关产品推荐
相关产品推荐

