我正在尝试用Python编写一个函数,它接受两个输入:
我希望函数找到行的第一个元素,并将它与A中具有相同第一个元素的行匹配。
然后该函数应该查看“row”的特定列中是否存在零,其中“A”的相同列中没有零
(例如:行的第5列有零,但A的第5列有26)。
如果不匹配,则该函数应打印该行。
下面是我正在使用的代码,但是我收到一个Index错误,说列表索引超出范围:
def compcols(row, A):
for i in range(len (A)):
for j in range(len(row)):
if row[0]==A[i][0]:
if row[j]==0 and A[i][j]!=0:
print row
Python专门列出了一行错误,如果row [j] == 0和A [i] [j]!= 0:“
答案 0 :(得分:0)
也许就像这样
def compcols(row, A):
for i in A:
if row[0]==i[0]:
for j, k in zip(row, i):
if j==0 and k!=0:
print row
答案 1 :(得分:0)
因此,您获得的列表索引超出了该行if row[j]==0 and A[i][j]!=0:
的范围。 j
中的range(len(row))
正在构建中,因此错误不应来自row[j]
。在前一行中,您已经拥有if row[0]==A[i][0]:
,因此它不应来自A [i]。
我怀疑它来自A[i]
元素少row
。您应该添加一个测试以确保:
def compcols(row, A):
for i in range(len (A)):
if (len(A[i]) < len(row):
raise Exception("Line %d len(A[i]) %d - len(row) %d"
% (i, len(A[i]), len(row)))
for j in range(len(row)):
if row[0]==A[i][0]:
if row[j]==0 and A[i][j]!=0:
print row