我将列表的副本传递给了一个函数,但由于某种原因原始列表发生了变化。我尽我所能,这完全不合逻辑,或者我做错了什么。
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
我想知道为什么网格实际上正在改变。