即使条件不为真,列表值也会在if语句中更新

Kev*_*arl 2 python

我试图firstCord在矩阵中扫描特定索引()的八个相邻索引,并找出它的任何邻居是否存在于Cord包含一些随机坐标作为元素的另一个列表()中.如果其中的任何邻居出现在Cord列表中,那么我会将该特定坐标附加到Temp_Cord列表中.代码段如下.

当第一次满足条件时,我可以看到Temp_Cord附加了newCord值的值if newCord in Cord:.这是预期的行为.但是附加值在Temp_Cord每个其他迭代中根据变化而变化newCord,这就像Temp_Cord[0]并且newCord共享相同的内存.有人可以帮我解决这个问题.我需要追加Temp_CordnewCord价值,只有当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) 
Run Code Online (Sandbox Code Playgroud)

Joh*_*ooy 5

你一遍又一遍地追加同一个名单

为什么不使用tuple这样的?

for i in orientation:
    newCord = firstCord[0] + i[0], firstCord[1] + i[1]
Run Code Online (Sandbox Code Playgroud)

或者如果它需要list- 每次都做一个新的

for i in orientation:
    newCord = [firstCord[0] + i[0], firstCord[1] + i[1]]
Run Code Online (Sandbox Code Playgroud)