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

如何在两个二维列表中提取匹配值与不匹配值

提取二维列表间的匹配与不匹配值

我有两个行数超200的二维列表df1和df2,需要针对df2的每个子列表,找出它与df1所有元素的匹配值和不匹配值,分别返回两个结果列表。

示例输入

df1 = [[1, 7, 3, 5], [5, 5, 14, 10]]
df2 = [[1, 17, 3, 5], [34, 14, 74], [34, 3, 87], [25, 14, 10]]

期望输出

no_match = [[17],[34,87],[34,74],[25]]
match = [[1,3,5],[3],[14],[14,10]]   

高效解决方案

由于列表行数较多,先将df1的所有元素合并为一个集合(集合的成员检测效率远高于列表),再遍历df2的每个子列表进行匹配判断:

# 整合df1所有元素为集合,提升查询效率
df1_all = set()
for sublist in df1:
    df1_all.update(sublist)

match = []
no_match = []

# 处理df2的每个子列表
for sub in df2:
    matched = []
    unmatched = []
    for num in sub:
        if num in df1_all:
            matched.append(num)
        else:
            unmatched.append(num)
    match.append(matched)
    no_match.append(unmatched)

# 输出结果
print("match =", match)
print("no_match =", no_match)

说明:示例期望输出中第二个匹配项标注为[3],但按逻辑df2的第二个子列表[34,14,74]中与df1匹配的是14,上述代码会输出符合逻辑的结果。若需求是df2子列表需与df1的特定子列表匹配,可调整代码逻辑遍历df1的子列表逐一对比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:32:55