我是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"
答案 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
)将不再可以使用该名称。