TypeError:“ int”对象没有属性“ __getitem __”(简单问题)

时间:2018-09-18 11:02:10

标签: python

我是Python的新手,并且在我的一小段代码中苦苦挣扎,我只是不明白为什么它不起作用。

我有一个列表列表,每个列表包含3个数字。我想检查某些列表的前两个数字是否相同。为什么不起作用?我应该怎么做才能使其正常工作?

list=[[0, 4, 0], [1, 4, 0], [0, 3, 1], [0, 4, 1]]

sorted(list)

for i in range(len(list)-1):
  if list[i][0][1] == list[i+1][0][1]:
      print "overlap"

2 个答案:

答案 0 :(得分:2)

您正在尝试访问自己的矩阵,就好像它是3维矩阵,但是它是2维矩阵。

删除索引之一:

list=[[0, 4, 0], [1, 4, 0], [0, 3, 1], [0, 4, 1]]

sorted(list)

for i in range(len(list)-1):
    if list[i][0:2] == list[i + 1][0:2]:
        print "overlap"

正如@Dunes所指出的那样,切片运算符使您可以比较列表中的必需项(有关详细信息,请查看understanding python slice notation)。

答案 1 :(得分:1)

您不需要多余的[1]

list[i]访问内部列表,例如[0, 4, 0]

list[i][0]访问该列表的第一个元素:例如0

此外,请不要使用内置名称作为变量的名称,因为内置名称(在我们的情况下为list)将不再可以使用该名称。