我试图打印两个不同大小的列表中的公共项,但我得到以下错误TypeError: 'int' object is not subscriptable
这些是名单
lst1 = [[1234, John Paul, New York], [4567, Jude Law, London],[7891, Rick Ross, Miami]]
lst2 = [[1234, John Paul, New York], [7891, Rick Ross, Miami]]
这是我的函数,它在列表中循环,试图找到常用项并将它们放入新列表中
lst1 = [[1234, John Paul, New York], [4567, Jude Law, London],[7891, Rick Ross, Miami]]
lst2 = [[1234, John Paul, New York], [7891, Rick Ross, Miami]]
list = []
min_lengh = min(len(lst1), len(lst2))
max_lengh = max(len(lst1), len(lst2))
for i in range(max_lengh):
if lst1[i[0] % min_lengh] == lst2[i[0] % min_lengh]:
list.append(i % min_lengh)
return list
因此,我正在检查列表中的第一个项目是否匹配,如果匹配,则将它们添加到列表中
抛出错误的行是这样的
if lst1[i[0] % min_lengh] == lst2[i[0] % min_lengh]:
我做错了什么
您的解决方案在这两个列表中都存在一些问题。这是可行的解决方案
i
被设置为range
迭代器。所以它有int
值,比如0, 1, 2...
。所以你不能做i[0]
。这就是为什么你会出错当比较两个列表时,我无法理解模运算符试图实现什么,或者为什么要检查
i[0]
,但您可能打算使用i
这样:…您在
append
行中正确地执行了以下操作:顺便说一句,使用
list
作为变量名是一个糟糕的想法,因为它覆盖了Python内置的list()
函数/构造函数。因此,您无法使用它创建列表。可以称之为indexes
或result
,这是一种有意义的东西,不会与Python的标准库名称冲突i
不是列表中的元素,它是一个索引:0
,1
,2
。。。所以i[0]
毫无意义您的意思可能是
lst1[i % min_lengh][0]
:首先获取子列表(例如[1234, John Paul, New York]
),然后从该子列表中获取第一个元素(例如1234
)相关问题 更多 >
编程相关推荐