我是Python(和编码)的新手,并且认为我对结构有一个合理的把握,但我一直坚持这个。我想更改嵌套列表的第一个值,然后更新列表中下一个位置的值(例如,将网格坐标创建为嵌套列表)。
p_d = 3
passes = 1
grid = []
row = []
column = [0, 0, 0]
while passes <= p_d:
row.append(column)
grid.append(row)
passes += 1
for i in range(len(row)):
column[i] = -(p_d - 1) / 2 + i
print(row)
结果如下:
[[-1.0, 0.0, 1.0], [-1.0, 0.0, 1.0], [-1.0, 0.0, 1.0]]
但我真正需要的应该是这样的:
[[-1.0, 0, 0], [0.0, 0, 0], [1.0, 0, 0]]
答案 0 :(得分:1)
通过执行row.append(column)
和grid.append(row)
,您可以将相同的行和列对象多次放入矩阵中。
相反,在循环内移动行和列的创建(例如,row = ...
和column = ...
)行,以便在每次迭代时创建新值。
答案 1 :(得分:0)
执行row.append(column)
时,您将相同的列表对象附加到行,因为列仅在全局创建了一次。因此,更改任何一列将更改所有列,因为它们是相同的列表对象。行也是如此
将行column = [0,0,0]
和row = []
移到for循环中:
p_d = 3
passes = 1
grid = []
while passes <= p_d:
row = []
column = [0, 0, 0]
row.append(column)
grid.append(row)
passes += 1
for i in range(len(grid)):
grid[i][0][0] = -(p_d - 1) / 2 + i
print(grid)