二维数组同索引元素连续减法实现及索引越界问题解决
问题分析与代码修正
原代码的核心问题
- 索引越界:
number循环范围是0到thin-1,当number = thin-1时,me_list[number+1]会访问超出数组长度的索引(数组最大索引为thin-1)。 - 硬编码元素数量:
range(0,10)强行假设每行固定10个元素,不符合题目中输入长度不确定的要求。 - 逻辑偏差:原代码是相邻行两两相减,而需求是用第一个行作为初始值,依次减去后续所有行的同索引元素。
修正后的代码
test_cases = int(input()) for _ in range(test_cases): row_count = int(input()) matrix = [] for _ in range(row_count): row = list(map(int, input().split())) matrix.append(row) # 初始化结果为第一行的副本,避免修改原数组 result = matrix[0].copy() # 遍历从第二行开始的所有行 for row in matrix[1:]: # 逐个元素执行减法 for i in range(len(result)): result[i] -= row[i] print(result)
关键修正点说明
- 用
matrix[0].copy()初始化结果,确保原输入数组不被修改。 - 遍历
matrix[1:]直接获取后续所有行,无需手动处理索引。 - 用
len(result)动态获取元素个数,适配任意长度的输入行(题目默认所有行长度一致)。 - 最终输出单个结果列表,符合题目要求的输出格式。
内容的提问来源于stack exchange,提问作者Licheng Zheng
相关产品推荐
相关产品推荐

