繁体   English   中英

TypeError列表索引必须为整数

[英]TypeError list indices must be integers

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

matrix[i, len(target)]尝试访问以元组i, len(target)为索引的matrix的项目–而不是整数。 看来您打算使用matrix[i][len(target)]代替。

您也应该将整数与== / !=进行比较– index != -1而不是index is not -1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM