我將列表的副本傳遞給一個函數,出於某種原因原始列表發生了變化。我嘗試了所有可能的方法,這完全不合邏輯,或者我做了一些非常錯誤的事情。爲什麼列表沒有理由變化?
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
我想知道爲什麼網格實際上在變化。
是嗎?提出以「爲什麼」開頭的問題不是一個好主意。首先請確定,該列表實際上*是*改變*沒有理由*。 – 2013-05-27 14:05:44
@LutzHorn你看,我想知道原因,如果真的有一個。我似乎無法找到它。 grid_temp =電網[:] 打印電網 grid_2 = get_pos(grid_temp,行,列) 印刷網 這只是其中有什麼關係呢 –