リストのコピーを関数に渡しましたが、何らかの理由で元のリストが変更されました。できる限りのことを試しましたが、これは完全に非論理的であるか、本当に間違ったことをしました。
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
グリッドが実際に変化する理由を知りたいです。