Python数组和函数
我有一个列表“映射”,我想用相应的输出值替换所有元素作用于初始数组的每个位置的函数“counterPosition”,类似于:Python数组和函数,python,list,Python,List,我有一个列表“映射”,我想用相应的输出值替换所有元素作用于初始数组的每个位置的函数“counterPosition”,类似于: map[0][0] = counterPosition(0,0) map[0][1] = counterPosition(0,1) ... for x in range (len(map)): for y in range (len(map)): map[x][y] = counterPosition(x,y) 这样一个接一个地做我可以
map[0][0] = counterPosition(0,0)
map[0][1] = counterPosition(0,1)
...
for x in range (len(map)):
for y in range (len(map)):
map[x][y] = counterPosition(x,y)
这样一个接一个地做我可以得到答案,但当我尝试这样做时:
map[0][0] = counterPosition(0,0)
map[0][1] = counterPosition(0,1)
...
for x in range (len(map)):
for y in range (len(map)):
map[x][y] = counterPosition(x,y)
它不起作用。。。我做错什么了吗
编辑:
你就快到了
for x in range (len(map)):
for y in range(len(map[x])):
map[x][y] = counterPosition(x,y)
更新:您提供的原始代码只会在地图为正方形时运行,但您提供的数据就是这样。查看示例数据和更新的代码,实际错误来自对位
函数。其实有两个问题
1。在您的对位功能中,您可以访问超出范围的元素。这是作为错误消息的一部分打印在索引器的正上方:…
-仔细阅读这些消息并将其包含在您的帖子中是一个好主意。如果传入x=5,y-5
,则函数将尝试访问map[6][6]
。“正确”的代码应该是
def counterPosition(x, y):
bombs = 0
for i in range(x-1, x+2):
for j in range(y-1, y+2):
# check bounds:
if 0 <= i < len(map) and 0 <= j < len(map[i]):
if map[i][j] == True:
bombs += 1
return bombs
def对位(x,y):
炸弹=0
对于范围内的i(x-1,x+2):
对于范围内的j(y-1,y+2):
#检查边界:
如果0你就快到了
for x in range (len(map)):
for y in range(len(map[x])):
map[x][y] = counterPosition(x,y)
更新:您提供的原始代码只会在地图为正方形时运行,但您提供的数据就是这样。查看示例数据和更新的代码,实际错误来自对位
函数。其实有两个问题
1。在您的对位功能中,您可以访问超出范围的元素。这是作为错误消息的一部分打印在索引器的正上方:…
-仔细阅读这些消息并将其包含在您的帖子中是一个好主意。如果传入x=5,y-5
,则函数将尝试访问map[6][6]
。“正确”的代码应该是
def counterPosition(x, y):
bombs = 0
for i in range(x-1, x+2):
for j in range(y-1, y+2):
# check bounds:
if 0 <= i < len(map) and 0 <= j < len(map[i]):
if map[i][j] == True:
bombs += 1
return bombs
def对位(x,y):
炸弹=0
对于范围内的i(x-1,x+2):
对于范围内的j(y-1,y+2):
#检查边界:
如果0是一个numpy数组,还是一个标准的python列表(嵌套)?map=[[True,False,False,False,True],[False,False,False,False,True],[True,True,False,True,False,False,True],[False,False,True,False,False],[False,False,False,False]]这是一个列表
,而不是一个数组
“它不工作…”不是一个非常详细的问题描述。您是否遇到错误?您使用的是哪种python版本?您意识到,您使用的是一个列表(而不是数组)b)重写内置的map
函数。附带说明:命名变量map
是个坏主意,因为这是一个内置函数(甚至可能对您的问题直接有用的函数…)。您是否有一个numpy数组
,或者一个标准的python列表
(嵌套)来代替它?map=[[真,假,假,假,假,真],[假,假,假,假,真],[真,真,假,假,真],[真,假,假,假,假],[假,假,真,假,假,假],[假,假,假,假,假]]这是一个列表
,而不是一个数组
“它不工作…”不是一个非常详细的问题描述。您是否收到错误?您使用的是哪个python版本?您知道,您使用的是一个列表(而不是数组)b)覆盖内置的map
函数。附带说明:命名变量map
是个坏主意,因为这是一个内置函数(甚至可能对您的问题直接有用……)..E先生的实现对我来说可以很好地处理你的数据和任意的对位函数,所以这是你做错的其他事情…E先生的实现对我来说可以很好地处理你的数据和任意的对位函数,所以这是你做错的其他事情