如何编写Python函数筛选列表中含指定子串的元素并随机返回指定数量结果
实现子串匹配筛选的代码修改方案
你只需要把原有代码中判断前缀匹配的逻辑替换为子串包含匹配即可,具体修改如下:
修改后的完整代码
import random as _random my_list = ['bottle', 'coffee', 'insufficient', 'differential', 'cat'] def contains_strings(m: str, n: int): # 核心修改点:把startswith前缀匹配改为in子串包含匹配,统一转小写保证大小写不敏感 a = list(filter(lambda x: m.lower() in x.lower(), my_list)) print(_random.choices(a, k=n))
调用测试
contains_strings('ff', 2)
输出示例
['insufficient', 'coffee']
改动说明
- 原有
x.lower().startswith(m)是判断字符串是否以m开头,不符合子串包含的需求 - 替换为
m.lower() in x.lower()后,逻辑变为判断m是否为字符串的子串,匹配过程不区分大小写,符合需求 - 如果需要严格区分大小写匹配,去掉代码中的两处
.lower()即可
内容的提问来源于stack exchange,提问作者Maximilian Freitag
相关产品推荐
相关产品推荐

