[这是我尝试将二维列表中的一组坐标映射到二维地图。每个坐标被指定为(y,x) y 和x 代表地图上的给定轴。地图只是一个由 0 组成的网格,坐标位置应该用“1”标记]
[这是我的输出和预期输出,我不确定为什么模式会重复,我如何获得任何给定坐标的预期输出?]
要初始化二维数组,请使用它而不是您的代码:
map = [ [0]*5 for i in range(5)]
否则所有的线都会一样。
也请不要拍摄代码的照片。
您的问题是按引用传递与按值传递:
a = [[0]]*10
print(a)
a[0][0]=10
print(a)
b = [[0] for _ in range(10)]
print(b)
b[0][0]=10
print(b)
在第一种情况(如何初始化列表)Python 是惰性的,它不是创建同一事物的 N 个副本,而是创建一次对象(我们称之为 LST)并将其引用 N 次传递给列表,这意味着修改任何内容N 个副本的结果会导致对 LST 的修改,而 LST 又会显示为对所有 N 个“副本”的修改。 在第二种情况下,你告诉 python 不,不要偷懒,实际上为我创建了 N 个副本(按值传递),因为我想修改它们。