嗨,我选了一门 python 作为“副”课程> 我是 python 的新手,只通过互联网/免费课程学习 python,所以我不知道也不知道怎么做。 在基于数组的电子表格实现中,我们使用 Python 列表(一种数据结构)作为 实现电子表格常用操作的基础。电子表格是单元格的二维结构, 每个单元格可以保存不同的数据类型,例如,通用、数字等。对于这个作业,我们将 专注于只持有浮点数的细胞。因此,要实现电子表格,我们需要实现 一个二维数组。 二维数组由电子表格中的元组(行,列)索引。一个例子是如果我们使用 索引行的数字和列的字母,我们可能有 (10,8) 来指定第 11 个单元格 行,第 9 列(我们假设索引从 0 开始)。
arr = [[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]]
w, h = 0, 0
curRow = [];
ssheet = [[0 for x in range(w)] for y in range(h)]
for i in range(0, 3):
print("loop i ", i)
for cell in arr:
print("loop cell", i, cell)
if cell[0] == i:
print(cell)
print(cell[2], end="<-cell2/ currow->")
curRow.append(cell[2])
print(curRow)
ssheet.insert(0, curRow)
print(ssheet, "sheet")
这就是我得到的
[[9, 2, 2.0, 2, 5, 7, 3, 6]] sheet
这就是我想要的
[[9, 2, 2.0], [2, 5, 7], [3, 6, None?]]
床单
您可以按照@Michael Butscher 的建议来修复您的代码,另一种方法,在我看来更简单,是用所有
None
初始化一个二维列表,然后使用多维索引用适当的值填充它,这是方法:
arr = [[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]]
# Determine the dimensions of the 2D array
max_row = max(arr, key=lambda x: x[0])[0]
max_col = max(arr, key=lambda x: x[1])[1]
# Create the 2D array
ssheet = [[None for j in range(max_col + 1)] for i in range(max_row + 1)]
# Fill in the 2D array with values from arr
for cell in arr:
row, col, val = cell
ssheet[row][col] = val
# Print the 2D array
for row in ssheet:
print(row)
如果需要更高的性能,max_row
和 max_col
可以在 arr
的单次迭代中计算。