Python中不使用库从单行输入生成指定大小方阵的实现方法
现有代码问题
- 矩阵初始化逻辑错误:
[[]*3]*3的写法一是硬编码了矩阵大小为3,没有适配用户输入的sizeOfMatrix;二是用*批量生成嵌套列表会导致所有子列表指向同一内存地址,修改任意子元素都会同步修改所有对应位置的元素,属于Python列表操作的常见错误。 - 缺少输入预处理步骤:没有将输入的单行空格分隔字符串转换为整数序列,无法直接用于矩阵元素赋值。
正确实现代码
sizeOfMatrix = int(input()) # 将单行输入的空格分隔数字转为整数列表 input_nums = list(map(int, input().split())) # 初始化sizeOfMatrix * sizeOfMatrix的矩阵 matrix = [[0 for _ in range(sizeOfMatrix)] for _ in range(sizeOfMatrix)] # 双层循环赋值 current_index = 0 for i in range(sizeOfMatrix): for j in range(sizeOfMatrix): matrix[i][j] = input_nums[current_index] current_index += 1
简化实现方案
不需要手动写双层循环计数,直接用列表切片按行切割输入序列即可生成矩阵,代码更简洁:
sizeOfMatrix = int(input()) input_nums = list(map(int, input().split())) matrix = [input_nums[i*sizeOfMatrix : (i+1)*sizeOfMatrix] for i in range(sizeOfMatrix)]
注意事项
- 输入的单行数字个数需要等于
sizeOfMatrix * sizeOfMatrix,否则会出现索引越界或矩阵元素缺失的问题。 - 第二种切片实现不需要提前初始化矩阵,执行效率更高,代码可读性也更好。
内容的提问来源于stack exchange,提问作者Sri Kavipriyan
相关产品推荐
相关产品推荐

