我最近开始学习python。以下代码抛出类型错误,指出我不能使用元组作为列表中的索引。我很确定我使用整数而不是列表来访问我的列表。在构建子矩阵的行处抛出错误。你能帮我吗?
Traceback (most recent call last):
File "matrix_input.py", line 44, in <module>
print(contains(matrix, target))
File "matrix_input.py", line 33, in contains
sub_matrix = [row[index:len(target[0])] for row in matrix[i, len(target)]]
TypeError: list indices must be integers, not tuple
这是抛出错误的函数:
def sub_array(row, sub_row):
i = 0
index = -1
for idx, val in enumerate(row):
if i >= len(sub_row):
break
elif val == sub_row[i]:
index = idx
i+=1
else:
i = 0
return index if i == len(sub_row) else -1
def contains(matrix, target):
for i in range(len(matrix)):
index = sub_array(matrix[i], target[0])
if index is not -1:
sub_matrix = [row[index:len(target[0])] for row in matrix[i, len(target)]]
print(sub_matrix)
if sub_matrix == target:
return "YES"
return "NO"
答案 0 :(得分:1)
matrix[i, len(target)]
尝试使用元组matrix
作为索引访问i, len(target)
中的项目 - 而不是整数。您似乎打算使用matrix[i][len(target)]
代替。
您应该将整数与==
/ !=
进行比较 - index != -1
代替index is not -1
。