0
列表切片在Python中從來不是我最強烈的方面,而且我有點不知所措。如何簡化此列表?
for x in range(1, width-1):
for y in range(1, height-1):
temp, walls = [], 0
temp = [[ grid[x-1][y-1], grid[x][y-1], grid[x+1][y-1] ],
[ grid[x-1][y], '@', grid[x+1][y] ],
[ grid[x-1][y+1], grid[x][y+1], grid[x+1][y+1] ]]
for l in temp: walls += l.count('#')
這是我的代碼元胞自動機地圖生成一個簡單的roguelike的一部分。不知何故,這種冗長的醜陋言論可以被簡化。我認爲temp = [ grid[x-1::3][y-1], grid[x-1::3][y], grid[x-1::3][y+1] ]
會工作,但我得到索引超出範圍的錯誤。
您使用了3的步長。也許您的意思是'x-1:x + 2:1'? (開始,停止,步驟)。但是我對你在2D環境中的切片感到困惑。你可能想在翻譯中玩弄一下,看看是否有可能。 – keyser