我有一个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,它应该是相当直接但我不确定我做错了什么
答案 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