You need to enable JavaScript to run this app. 处理不同长度嵌套列表取公共元素时报'int'不可下标错误如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

处理不同长度嵌套列表取公共元素时报'int'不可下标错误如何解决?

代码问题说明

报错直接原因

  • 你在循环中使用的i是range(max_lengh)生成的整型变量,整型对象不支持下标取值操作,你写的i[0]是非法操作,这就是TypeError: 'int' object is not subscriptable报错的根因。

其他潜在问题

  • 逻辑不符合需求:你写的判断语句是直接对比两个子列表的全部内容,不是你所说的仅对比子列表首元素;且用i%min_lengh取索引的逻辑完全错误,既可能出现索引越界,也无法正确匹配不同位置的公共元素。
  • 变量命名违规:你使用Python内置关键字list作为变量名,会覆盖内置的list类,后续调用list()相关方法会出现异常。
  • 语法错误:如果这段代码没有封装在函数内部,直接写return会抛出语法错误。
  • 示例列表不规范:列表中的姓名、城市属于字符串类型,没有加引号包裹,运行时会报未定义变量的错误。

修正代码

需求1:提取两个列表中完全相同的子列表

lst1 = [[1234, "John Paul", "New York"], [4567, "Jude Law", "London"],[7891, "Rick Ross", "Miami"]]
lst2 = [[1234, "John Paul", "New York"], [7891, "Rick Ross", "Miami"]]
common_list = [item for item in lst1 if item in lst2]
print(common_list)

需求2:仅按子列表首元素匹配,提取首元素相同的子列表

lst1 = [[1234, "John Paul", "New York"], [4567, "Jude Law", "London"],[7891, "Rick Ross", "Miami"]]
lst2 = [[1234, "John Paul", "New York"], [7891, "Rick Ross", "Miami"]]
# 先提取lst2所有子列表的首元素做匹配池
lst2_first_ids = {item[0] for item in lst2}
common_list = [item for item in lst1 if item[0] in lst2_first_ids]
print(common_list)

两种写法的输出均为[[1234, 'John Paul', 'New York'], [7891, 'Rick Ross', 'Miami']],符合预期。

内容的提问来源于stack exchange,提问作者user6248190

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 00:57:04