Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python数组和函数_Python_List - Fatal编程技术网

Python数组和函数

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) 这样一个接一个地做我可以

我有一个列表“映射”,我想用相应的输出值替换所有元素​​作用于初始数组的每个位置的函数“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)
它不起作用。。。我做错什么了吗

编辑:

你就快到了

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先生的实现对我来说可以很好地处理你的数据和任意的对位函数,所以这是你做错的其他事情