필자는 목록의 사본을 함수에 전달했는데 어떤 이유로 원래 목록이 변경되었습니다. 나는 할 수있는 모든 노력을 기울였습니다. 이것은 완전히 비논리적 인 것이거나 잘못된 것을 저질렀습니다.목록이 이유없이 변경되는 이유는 무엇입니까?
maze="""XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXX XXXXXXXXXXXXXXXXXXXXX EXX
XXXXXXXXXXXXXX XXX XXXX XXX
XX XX XXX XXXXXXX XXXX XXXXXXX
XX XX XXXXXXXXX XX XXXXXXX XXXX XXXXXXX
XX XX XXXXXXX XXXXX XXXXXXX XXXX XXXXXXX
XX XX XXXX XXXXX XXXXX XX
XX XX XXXX XX XXXXX XXX XXXXXXXXXXXXXX
XX XX XXXX XX XXXXXXX XXX XXXX XX
XX XX XX XXX XXXXXXX XXXX XX XX
XX XXXXXXXXXX XXX XXX XXXXXXX XXXXX
XX XXXXX XXX XXXXXX XXXX XXXXX
XXXX XX XXXXX XXX XX XXXX XXXX XXX
XXXX XX XXXXX XXX XX XXXXXXXX XXXXXX XXX
XX XX XXX XXX XX XXXXX XXXX XXX
XXXX XX XXXXX XXXXX XXXXXXX XXXXX
XXXX XXXXXXXXXXXXXXXXXXXXX XXXXXXX XXX
XXXX XXX XXXXX XXX
XXXXXXXXXXXXXXXX XXXXXX XXXXXX XXXXX XXX
XXX XXXXXX XXXXXX XXXXX XXX
XXX XXXXXXXXXXXXXXXXX XX XXXXX XX
XXX XX XX XXXX XXXXXXXXXX XX
XS XXXXXXXX XXXXX XXXX XX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"""
grid=maze.split("\n")
for x in xrange(len(grid)):
grid[x]=list(grid[x])
row=len(grid)
col=len(grid[0])
def check(maze,x,z,row,col):
lim=0
if z+1<col and maze[x][z+1]=="X":
lim+=1
if x+1<row and maze[x+1][z]=="X":
lim+=1
if z-1>=0 and maze[x][z-1]=="X":
lim+=1
if x-1>=0 and maze[x-1][z]=="X":
lim+=1
return lim
def get_pos(grida,row,col):
for l in xrange(100):
for x in xrange(len(grida)):
for z in xrange(len(grida[x])):
if check(grida,x,z,row,col)>=3 and grida[x][z]!="E" and grida[x][z]!="S":
grida[x][z]="X"
else:
continue
return grida
grid_temp=grid[:]
print grid
grid_2=get_pos(grid_temp,row,col)
print grid
그리드가 실제로 변경되는 이유를 알고 싶습니다.
"왜"로 시작하는 질문은 좋은 생각이 아닙니다. 먼저 목록이 사실 * * * 이유없이 변경되는지 확인하십시오. –
@LutzHorn 당신은 내가 그 이유를 알기를 원한다는 것을 알 수 있습니다. 나는 그것을 찾을 수없는 것 같습니다. grid_temp = 그리드 [:] 인쇄 그리드 grid_2 = get_pos (grid_temp, 행 안부) 인쇄 그리드 그냥 어, 쓰기 속도하는 –