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

Python3实现两列表元素前3位匹配后输出List_B对应原数据

匹配前3位字符后输出List_B对应原始值的实现方案

原有代码的核心问题

  • 循环遍历主体是List_A1存储的前3位片段,匹配成功时直接打印片段内容,没有关联回List_B的原始存储值,导致输出全是短字符片段
  • 未对List_A提取的前缀做去重,List_A中两个apple开头的元素会重复触发匹配判断,造成冗余逻辑

具体修改代码

# 基础列表定义
List_A = ["apple123","banana3","345banana","cat123","apple456"]
List_B = ["apple123","345123","dog234","apple4","cat002345"]

# 提取List_A所有元素的前3位,去重后生成前缀集合(提升查询效率、避免重复判断)
list_a_prefix = {item[0:3] for item in List_A}

# 逐行遍历List_B的原始元素,判断前缀是否匹配
for original_item in List_B:
    if original_item[0:3] in list_a_prefix:
        print(original_item)

运行输出

apple123
345123
apple4
cat002345

方案说明

  • 采用集合存储List_A的前缀值,自动去重原本重复的app前缀,查询效率远高于列表,也不会触发冗余的重复匹配逻辑
  • 遍历对象为List_B的原始元素,匹配成功时直接输出当前遍历的原始值,不会丢失字符串的完整内容
  • 输出顺序完全和List_B的原有元素顺序一致,和预期效果完全匹配

如果更习惯用之前的列表存储写法,仅调整匹配校验逻辑即可,效果完全一致:

List_A1 = []
for i in List_A:
    List_A1.append(i[0:3])
# 对List_A1做去重处理
List_A1 = list(set(List_A1))

for original_item in List_B:
    if original_item[0:3] in List_A1:
        print(original_item)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 00:36:05