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

如何用一行代码(map/filter/zip等)实现正则匹配跨列表筛选元素

一行代码实现正则匹配筛选对应列表元素

嘿,这就帮你把代码改成更优雅的一行版本!核心思路是用zip把两个列表的对应元素配对,再通过列表推导式完成筛选,既简洁又易读:

import re

form_win = ['2/5','1/4','3/2','4/1','5/8','1/3','7/10','8/6']
form_chr = ['a','b','c','d','e','f','g','h']

# 一行实现筛选逻辑
b = [char for win_str, char in zip(form_win, form_chr) if re.match(r'^1/', win_str)]

print('uglyst:', b)  # 输出: uglyst: ['b', 'f']

为什么这么改?

  • 用zip(form_win, form_chr)直接把每个赔率字符串和对应的字符配对,避免了原代码里用enumerate取索引再查form_chr的繁琐操作。
  • 列表推导式把循环、条件判断和结果收集合并成一行,逻辑清晰且符合Pythonic的风格。
  • 原代码里的b.extend(form_chr[cnt])其实等价于b.append(form_chr[cnt])(因为单个字符是长度为1的可迭代对象),列表推导式直接收集字符就完成了相同的效果。

如果你不想用正则,其实还可以用字符串的startswith方法进一步简化(性能也更好),一行代码可以改成:

b = [char for win_str, char in zip(form_win, form_chr) if win_str.startswith('1/')]

这个版本不需要导入re模块,对于固定前缀的匹配场景更高效~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:42:00