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

如何匹配两个二维列表?实现跨列表元素匹配及结果返回

解决方案

问题分析

你需要实现的逻辑是:遍历df1中的每个子列表,找出df2中所有与它存在交集的子列表,将每对有交集的子列表合并后排序,最终按df1的分组整理结果。

实现代码

def merge_matching_lists(df1, df2):
    result = []
    for sublist1 in df1:
        current_group = []
        set1 = set(sublist1)
        for sublist2 in df2:
            # 判断两个子列表是否有交集
            if set1 & set(sublist2):
                # 合并两个子列表并排序
                merged_sorted = sorted(sublist1 + sublist2)
                current_group.append(merged_sorted)
        result.append(current_group)
    return result

# 测试示例数据
df1 = [[2,4,6,8,9,10],[10,13,15,17,26,44],[27,28,34,37,40]]
df2 = [[1,2,4,5,6,8],[5,6,20,22,23,34],[8,12,13,34,45,46],[9,10,14,29,32,33],[1,22,13,23,33,35],[1,6,7,8,9,10],[0,2,3,5,6,8]]

result = merge_matching_lists(df1, df2)

# 格式化输出结果
for idx, group in enumerate(result):
    print(f"Group {idx+1}:")
    for lst in group:
        print(lst)

代码解释

  1. 交集判断:将子列表转为集合,利用集合交集操作快速判断是否存在共同元素,比遍历列表效率更高。
  2. 合并排序:把有交集的两个子列表拼接后,用sorted()函数排序,得到有序的合并结果。
  3. 分组整理:按df1的子列表顺序,把对应符合条件的合并结果整理成大列表,结构与需求匹配。

与示例结果的差异说明

你的示例结果中第一个分组的第一个元素少了一个4,这应该是笔误——按合并逻辑,df1和df2的第一个子列表都包含4,合并后应出现两次4,代码输出结果是正确的。另外,df2第五个子列表与df1第二个子列表有共同元素13,代码会将其合并结果加入第二个分组,若你的示例是刻意排除该元素,可在交集判断时添加额外过滤条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:34:57