2013-12-13 4 views
2

매트릭스에서 특정 인덱스 (이웃 인덱스)를 8 개 스캔하고 해당 인접 라우터가 다른 목록에 있는지 확인합니다 (Cord)로 구성됩니다. 이웃이 Cord 목록에있는 경우 해당 특정 좌표를 Temp_Cord 목록에 추가합니다. 코드 스 니펫은 아래에 나와 있습니다.조건이 참이 아니더라도 목록 값이 if 문 내부에서 업데이트 됨

처음으로 if newCord in Cord: 조건이 충족 될 때 에 newCord 값이 추가되는 것을 확인할 수 있습니다. 예상되는 행동입니다. 그러나 의 추가 된 값은 newCord의 변경에 따라 다른 모든 반복에서 변경되며 이는 Temp_Cord[0]newCord과 같은 메모리를 공유합니다. 누군가가이 문제를 해결할 수 있도록 도와 줄 수 있습니까? if newCord in Cord: 조건이 true 인 경우에만 Temp_CordnewCord 값과 함께 추가해야합니다.

감사의 말.

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) 

답변

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]] 
관련 문제