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

技术问询:实现从列表筛选含指定子串的字符串功能

需求:从列表b中筛选包含列表a元素的字符串

需求概述

给定两个列表a和b,需要生成列表c,其中包含b中所有包含a里任意元素作为子串的字符串。

示例1

输入:

a = ['apple', 'banana', 'orange']
b = ['TOR_apple_impact', 'TOR_apple_staging', 'TOR_banana_impact', 'TOR_banana_STAGING', 'TOR_orange_IMPACT', 'TOR_orange_STAGING']

输出:

c = ['TOR_apple_impact', 'TOR_apple_staging', 'TOR_banana_impact', 'TOR_banana_STAGING', 'TOR_orange_IMPACT', 'TOR_orange_STAGING']

示例2

输入:

a = ['apple', 'banana']
b = ['TOR_apple_impact', 'TOR_apple_staging', 'TOR_banana_impact', 'TOR_banana_STAGING', 'TOR_orange_IMPACT', 'TOR_orange_STAGING']

输出:

c = ['TOR_apple_impact', 'TOR_apple_staging', 'TOR_banana_impact', 'TOR_banana_STAGING']

你的尝试代码

你目前写的代码是这样的:

def build_systems_to_query(self, source_systems):
    systems_to_query = []
    for i in source_systems:
        systems_to_query.append('TOR' + '_' + i)
        systems_to_query.append('TOR' + '_' + i)
    return systems_to_query

这段代码的问题是它只是在生成带TOR_前缀的重复字符串,并没有实现从列表b中筛选符合条件元素的核心逻辑。

正确实现方案

这里提供两种简洁高效的实现方式:

方式1:循环遍历筛选

逻辑清晰,适合新手理解:

def filter_list_b(a, b):
    c = []
    for item in b:
        # 检查当前item是否包含a中的任意关键词
        for keyword in a:
            if keyword in item:
                c.append(item)
                break  # 找到匹配就停止检查当前item的其他关键词
    return c

方式2:列表推导式(更简洁)

利用Python的列表推导式结合any()函数,一行搞定核心逻辑:

def filter_list_b(a, b):
    return [item for item in b if any(keyword in item for keyword in a)]

测试验证

用你的示例测试一下,完全符合预期:

# 示例1测试
a1 = ['apple', 'banana', 'orange']
b1 = ['TOR_apple_impact', 'TOR_apple_staging', 'TOR_banana_impact', 'TOR_banana_STAGING', 'TOR_orange_IMPACT', 'TOR_orange_STAGING']
print(filter_list_b(a1, b1))
# 输出:['TOR_apple_impact', 'TOR_apple_staging', 'TOR_banana_impact', 'TOR_banana_STAGING', 'TOR_orange_IMPACT', 'TOR_orange_STAGING']

# 示例2测试
a2 = ['apple', 'banana']
b2 = ['TOR_apple_impact', 'TOR_apple_staging', 'TOR_banana_impact', 'TOR_banana_STAGING', 'TOR_orange_IMPACT', 'TOR_orange_STAGING']
print(filter_list_b(a2, b2))
# 输出:['TOR_apple_impact', 'TOR_apple_staging', 'TOR_banana_impact', 'TOR_banana_STAGING']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:05:44