TypeError列表索引必须是整数

时间:2015-08-18 22:25:14

标签: python

我最近开始学习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"

1 个答案:

答案 0 :(得分:1)

matrix[i, len(target)]尝试使用元组matrix作为索引访问i, len(target)中的项目 - 而不是整数。您似乎打算使用matrix[i][len(target)]代替。

您应该将整数与== / !=进行比较 - index != -1代替index is not -1