我试图在矩阵中扫描特定索引(firstCord
)的八个相邻索引,并查找其中任何一个邻居是否存在于包含一些随机坐标的另一个列表(Cord
)中作为元素。如果Cord
列表中存在任何邻居,那么我会将该特定坐标附加到Temp_Cord
列表中。代码段如下所示。
当第一次满足Temp_Cord
条件时,我可以看到newCord
附加了if newCord in Cord:
值。这是预期的行为。但Temp_Cord
中的附加值会根据newCord
中的更改而在每个其他迭代中发生更改,类似于Temp_Cord[0]
和newCord
共享相同的内存。有人可以帮我解决这个问题。仅当Temp_Cord
条件为真时,我才需要在newCord
值附加if newCord in Cord:
。
先谢谢。
Cordlen = len(Cord)
orientation = [(-1,0), (-1,1), (0,1), (1,1), (1,0), (1,-1),(0,-1),(-1,-1)]
firstCord = [0,173]
Temp_Cord = []
while ((Arrlen) < Cordlen):
newCord = [0,0]
for i in orientation:
newCord[0] = firstCord[0] + i[0]
newCord[1] = firstCord[1] + i[1]
if newCord in Cord:
Temp_Cord.append(newCord)
Arrlen = len (Temp_Cord)
答案 0 :(得分:5)
您一遍又一遍地追加相同的列表
为什么不直接使用这样的tuple
?
for i in orientation:
newCord = firstCord[0] + i[0], firstCord[1] + i[1]
或者如果它需要是list
- 每次都要新建一个
for i in orientation:
newCord = [firstCord[0] + i[0], firstCord[1] + i[1]]