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

如何在Python 3中提取两个嵌套列表的差异元素并生成新列表?

提取两个嵌套列表对应位置不同元素的实现方法

你遇到的问题很明确——原代码是在对比整个子列表,而不是逐个元素检查对应位置的差异,所以才会返回整个子列表,而不是你想要的单个元素集合。

咱们直接来看正确的实现方式:

基础循环实现

这种方式逻辑清晰,适合新手理解:

list_1 = [[5, 3, 4], [1, 5, 8], [6, 4, 2]]
list_2 = [[8, 3, 4], [1, 5, 9], [6, 7, 2]]

result = []
# 先把两个列表的对应子列表配对
for sub_list1, sub_list2 in zip(list_1, list_2):
    # 再对子列表里的每个对应元素逐一比较
    for num1, num2 in zip(sub_list1, sub_list2):
        if num1 != num2:
            # 把两个不同的元素都加入结果
            result.append(num1)
            result.append(num2)

print(result)  # 输出: [5, 8, 8, 9, 4, 7]

简洁的列表推导式

如果喜欢更紧凑的代码,可以用列表推导式一步完成:

list_1 = [[5, 3, 4], [1, 5, 8], [6, 4, 2]]
list_2 = [[8, 3, 4], [1, 5, 9], [6, 7, 2]]

result = [
    num 
    for sub1, sub2 in zip(list_1, list_2) 
    for num1, num2 in zip(sub1, sub2) 
    if num1 != num2 
    for num in (num1, num2)
]

print(result)  # 同样得到: [5, 8, 8, 9, 4, 7]

为什么你的原代码不对?

你之前的代码是遍历list_2的子列表,判断整个子列表是否在list_1中——比如[8, 3, 4]确实不在list_1里,所以会把整个子列表添加到storer中。但你的需求是对比对应位置的单个元素,所以必须把遍历的粒度细化到每个元素,而不是子列表级别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:36:48