基于Python列表实现二维数组电子表格的代码修正求助
实现基于列表的二维浮点数电子表格
你的问题核心是没有按行分组构建结构,也未处理缺失列的填充。以下是修正后的代码,完全用Python列表实现,满足你的需求:
# 输入数据:每个子列表格式为 [行号, 列号, 值] input_data = [[0, 0, 9], [0, 1, 2], [0, 2, 2.0], [1, 0, 2], [1, 1, 5], [1, 2, 7], [2, 0, 3], [2, 1, 6]] # 确定最大行号和列号,用于初始化二维框架 max_row = max(item[0] for item in input_data) max_col = max(item[1] for item in input_data) # 初始化全为None的二维列表,覆盖所有行列范围 spreadsheet = [] for _ in range(max_row + 1): row = [None] * (max_col + 1) spreadsheet.append(row) # 遍历输入数据,填充对应位置的值并强制转为浮点数 for row_idx, col_idx, value in input_data: spreadsheet[row_idx][col_idx] = float(value) # 输出结果 print(spreadsheet)
运行后会得到预期结构:
[[9.0, 2.0, 2.0], [2.0, 5.0, 7.0], [3.0, 6.0, None]]
关键细节说明:
- 确定行列范围:通过输入数据找到最大行/列号,确保创建的二维列表能覆盖所有给定单元格位置。
- 初始化框架:先构建全
None的二维结构,缺失的单元格(如第2行第2列)会保留None。 - 强制浮点数存储:用
float(value)转换所有输入值,保证电子表格仅存储浮点数类型,整数输入也会转为浮点格式。
如果需要通过(row, column)元组索引直接访问单元格,可以添加一个简单的工具函数:
def get_cell(spreadsheet, index): row, col = index if 0 <= row < len(spreadsheet) and 0 <= col < len(spreadsheet[0]): return spreadsheet[row][col] return None # 示例:访问(2,2)单元格 print(get_cell(spreadsheet, (2,2))) # 输出 None
内容的提问来源于stack exchange,提问作者newToCode
相关产品推荐
相关产品推荐

