使用列表推导式找出list2中包含list1中任何子字符串的元素

list1 = ['.jpg', '.jpeg', '.png']  # 待对比列表
list2 = ['文件一.mp3', '文件二.jpg', '文件三jpg.mp4', '文件四.jpeg_copy']  # 原始列表

# 使用列表推导式来找出list2中包含list1中任何子字符串的元素
matching_elements = [elem for elem in list2 if any(ext in elem for ext in list1)]

# 输出结果
if matching_elements:
    print("list2中有元素包含list1中的子字符串:", matching_elements)
else:
    print("list2中没有元素包含list1中的子字符串。")

列表推导式的基本语法如下:

[表达式 for 元素 in 可迭代对象 if 条件]
  • 表达式:它是你希望对每个元素进行的操作或转换。
  • 元素:表示当前循环到的元素。
  • 可迭代对象:你要遍历的对象,比如列表、元组、字符串等。
  • 条件(可选):一个过滤条件,只有满足条件的元素才会被包含在生成的列表中。
  1. 使用列表推导式进行匹配
    • 列表推导式 [elem for elem in list2 if any(ext in elem for ext in list1)]中存在两个列表推导式,any()函数中的推导式ext in elem for ext in list1其中的ext in elem是其表达式
    • 对于 list2 中的每一个元素 elem,执行 if 条件判断。
    • 在 if 条件中,使用 any() 函数来检查 list1 中的任何一个扩展名 ext 是否是 elem 的一部分(即 ext in elem 是否为真)。
    • 如果 any() 函数返回 True(意味着 elem 包含 list1 中的任何一个扩展名),则 elem 被包含在最终的 matching_elements 列表中。
  2. 详细匹配过程
    • 对于 '文件一.mp3':检查是否包含 '.jpg''.jpeg', 或 '.png'。都不包含,所以不会被添加到 matching_elements
    • 对于 '文件二.jpg':包含 '.jpg',所以会被添加到 matching_elements
    • 对于 '文件三jpg.mp4':虽然它包含 'jpg',但是 'jpg'前面缺少'.',所以不会被添加到 matching_elements
    • 对于 '文件四.jpeg_copy':包含 '.jpeg'(尽管后面有 _copy),所以会被添加到 matching_elements
  3. 输出结果:list2中有元素包含list1中的子字符串: ['文件二.jpg', '文件四.jpeg_copy']

可用于根据类型查询素材后,根据素材名称验证素材是否符合格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值