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

Python实现:为列表a每个元素从列表b提取3个对应匹配元素

问题与解决方案

问题描述

给定以下Python列表:

a = [1, 4, 2, 5]

b = [[[0, 1]], [[0, 2]], [[0, 3]], [[0, 4]], [[0, 5]], [[0, 6]], [[0, 2]], [[0, 3]], [[0, 4]], [[0, 5]], [[0, 4]],
     [[0, 5]], [[0, 6]], [[0, 4]], [[0, 2]], [[0, 2]], [[0, 4]], [[0, 4]], [[0, 5]], [[0, 5]], [[0, 5]], [[0, 1]],
     [[0, 5]], [[0, 1]], [[0, 1]]]

需求:遍历列表a,为a中的每个元素,找出列表b中内层列表索引1处元素等于该元素的项,每个元素仅提取3个,超出的忽略,最终输出格式如下:

[[0, 1]]
[[0, 1]]
[[0, 1]]
[[0, 4]]
[[0, 4]]
[[0, 4]]
[[0, 2]]
[[0, 2]]
[[0, 2]]
[[0, 5]]
[[0, 5]]
[[0, 5]]

实现方案

直接通过双层循环即可完成需求,代码如下:

a = [1, 4, 2, 5]

b = [[[0, 1]], [[0, 2]], [[0, 3]], [[0, 4]], [[0, 5]], [[0, 6]], [[0, 2]], [[0, 3]], [[0, 4]], [[0, 5]], [[0, 4]],
     [[0, 5]], [[0, 6]], [[0, 4]], [[0, 2]], [[0, 2]], [[0, 4]], [[0, 4]], [[0, 5]], [[0, 5]], [[0, 5]], [[0, 1]],
     [[0, 5]], [[0, 1]], [[0, 1]]]

for target in a:
    match_count = 0
    for item in b:
        # 匹配内层列表索引1处的元素
        if item[0][1] == target:
            print(item)
            match_count += 1
            # 收集够3个就停止当前目标的匹配
            if match_count == 3:
                break

逻辑说明:

  • 外层循环遍历a中的每个目标值
  • 对每个目标初始化计数器,遍历b时逐一检查元素是否符合条件
  • 每找到一个符合条件的元素就打印,计数器加1,达到3个后立即跳出当前b的循环,转向处理a的下一个元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:20:26