计算2D阵列的所有列中的连续数字

时间:2016-10-23 12:48:11

标签: python arrays

我有一个2d数组,X,看起来像这样

[0, 0, 0, 2, 1]
[1, 2, 1, 0, 1]
[2, 2, 1, 0, 0]
[0, 0, 1, 2, 0]

我试图遍历整个2D数组,尝试计算列中有2个连续元素的所有实例。例如。上面的X会返回4(X[1][1] == X[2][1] && X[1][2] == X[2][2] && X[2][2] == X[3][2]等等)

我发现这很难想象。到目前为止,我有:

def get_opposite(number):
    if number == 2: return 1
    if number == 1: return 2

def counter(X, number):
        count = 0
        for i in range(len(X)):
            for j in range(len(X[i])-1):
                    if X[i][j] == X[i][j+1] and X[i][j] != 0 and X[i][j] != get_opposite(number):
                        count += 1
        return count

我要么得到非常不正确的结果,要么是IndexError,它应该是相当直接但我不确定我做错了什么

1 个答案:

答案 0 :(得分:1)

如果您将文本中提供的示例与实际代码进行比较,则会注意到您的代码与右侧上的值进行比较,而不是使用值进行比较在下面。您需要将+1应用于第一个索引,而不是第二个索引。这也意味着你的循环范围必须相应调整。

其次,你不需要第一个功能。平等比较就足够了。

另外,我删除了函数的第二个参数,因为它没有任何作用:

def counter(X):
    count = 0
    for i in range(len(X)-1):
        for j in range(len(X[i])):
            if X[i][j] == X[i+1][j] and X[i][j] != 0:
                count += 1
    return count