我试着扫描一个矩阵中一个特定索引(firstCord)的八个相邻索引,并找出它的任何相邻索引是否存在于另一个包含一些随机坐标作为元素的列表(Cord)中。如果它的任何邻居出现在Cord列表中,那么我会将该特定坐标附加到Temp_Cord列表中。代码片段如下所示。
我可以看到当第一次满足Temp_Cord条件时,newCord会附加if newCord in Cord:值。这是预期的行为。但是Temp_Cord中的附加值会随着newCord中的变化而变化,这就像Temp_Cord[0]newCord共享相同的内存一样。有人能帮我解决这个问题吗。只有当Temp_Cord条件为真时,我才需要附加newCordif 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)

最佳答案

你一次又一次地把同一个单子加上去
为什么不使用这样的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]]

08-04 11:10