使用2D数组从(行,列,值)元组列表构建电子表格.没有numpy



嗨,我选了一门python课,作为"边"课之一。course>我是新的python,只通过互联网/免费课程学习python,所以我不知道或如何。在基于数组的电子表格实现中,我们使用Python列表(一种数据结构)作为实现电子表格常用操作的基础。电子表格是单元格的二维结构,每个单元格可以保存不同的数据类型,例如,一般类型,数字类型等。对于这个作业,我们会把注意力集中在那些只携带漂浮物的细胞上。因此,要实现电子表格,我们需要实现二维数组2D数组由电子表格中的元组(行、列)索引。一个例子是如果我们使用数字表示索引行,字母表示列,我们可以用(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?]]sheet

您可以遵循@Michael Butscher的建议来修复您的代码,另一种方法,在我看来更简单,是初始化所有None的2d列表,然后使用多维索引填充适当的值,这是方法:

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_rowmax_col可以在arr的单次迭代中计算。