TypeError:“int”对象在不同大小的列表上不可下标

2024-09-29 04:32:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图打印两个不同大小的列表中的公共项,但我得到以下错误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]:

我做错了什么


Tags: 列表newlenminjohnmaxlistrick
3条回答

您的解决方案在这两个列表中都存在一些问题。这是可行的解决方案

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):
    for j in range(max_lengh):
        if lst1[i % min_lengh] == lst2[j % min_lengh]:
            list.append(lst1[i])
print(list)

i被设置为range迭代器。所以它有int值,比如0, 1, 2...。所以你不能做i[0]。这就是为什么你会出错

当比较两个列表时,我无法理解模运算符试图实现什么,或者为什么要检查i[0],但您可能打算使用i这样:

if lst1[i % min_lengh] == lst2[i % min_lengh]:

…您在append行中正确地执行了以下操作:

list.append(i % min_lengh)


顺便说一句,使用list作为变量名是一个糟糕的想法,因为它覆盖了Python内置的list()函数/构造函数。因此,您无法使用它创建列表。可以称之为indexesresult,这是一种有意义的东西,不会与Python的标准库名称冲突

i不是列表中的元素,它是一个索引:012。。。所以i[0]毫无意义

您的意思可能是lst1[i % min_lengh][0]:首先获取子列表(例如[1234, John Paul, New York]),然后从该子列表中获取第一个元素(例如1234

相关问题 更多 >