Python矩阵邻居检查

时间:2012-11-29 08:30:24

标签: matrix python-3.x

我有一个包含0和1的7 * 7矩阵,其中每个(x,y)将检查其中有多少邻居是1.我是python的初学者,并且只会使用基本的编程程序。

我有:

for x in range(rows):
        for y in range(cols):
            lives = 0
            lives = neighbors(matrix, rows, cols)

def neighbors(matrix, rows, cols):

            if matrix[x][y+1] == 1:
                lives += 1
            if matrix[x-1][y+1] == 1:
                lives += 1
            #All 8 positions are checked like this
    return lives

我收到了ol索引错误。这似乎是一个非常简单的问题,我似乎无法弄清楚如何解决它。

1 个答案:

答案 0 :(得分:1)

首先,执行y + 1时会发生索引错误。由于你是在cols数量的范围内,这将最终成为cols + 1,这超出了范围。 你可以做的是使用try-except块,或者通过循环到cols-1确保它不会超出范围。

此外,您的函数定义是多余的,因为您不使用所有输入参数,并且可以访问全局范围中的x和y变量。 最简单的方法就是删除定义和return语句。

这应该有效:

for x in range(rows):
    for y in range(cols-1): #Loop until the second to last element.
        lives = 0
        if matrix[x][y+1] == 1:
            lives += 1
        if x == 0:  #You probably don't want to check x-1 = -1
            continue 
        if matrix[x-1][y+1] == 1:
            lives += 1