You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python查找第一个嵌套列表中不在第二个列表的元素并追加到l2

代码问题定位

你的代码逻辑错误出在成员判断环节:

  • l2是两层嵌套列表,直接使用元素 not in l2做判断时,Python只会检查该元素是否等于l2最外层的某一个子列表,不会深入子列表内部检查单个值是否存在。
  • 举个例子,判断数字2是否在l2中时,代码只会把2和[1,8,10]、[3,9]、[5,6]这三个顶层子列表做相等比较,结果必然是不相等,根本不会检查子列表内部是否包含2,最终判断结果完全偏离预期。
  • 运行你写的原代码,得到的ls会是[1,2,3,5,6,7,8,9,10]——因为所有单个数字都不可能和l2里的任何一个子列表相等,自然全部被判定为“不存在于l2”。
修正后代码

正确的思路是先把l2所有子列表里的元素汇总成一个可快速查询的集合,再遍历l1做存在性校验,代码如下:

l1 = [[1,2,3],[5,6],[7,8,9,10]]
l2 = [[1,8,10],[3,9],[5,6]]

ls = []
# 汇总l2中所有已存在的元素
exists = set()
for sub in l2:
    exists.update(sub)

# 遍历l1收集不存在的元素
for sub in l1:
    for num in sub:
        if num not in exists and num not in ls:
            ls.append(num)

l2.append(ls)
print(l2)

运行上述代码会输出[[1, 8, 10], [3, 9], [5, 6], [2, 7]],完全匹配你的预期结果。

优化提示:使用集合做成员判断的时间复杂度为O(1),比直接遍历列表判断的O(n)效率高很多,数据量越大优势越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:18:21