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

如何在列表推导式中合并分割与映射,避免重复调用split()?

优化后的Python惯用写法

你可以用两种符合Python风格的方式合并操作,避免重复调用split():

方法一:使用海象运算符(Python 3.8+)

海象运算符:=能在表达式内部完成赋值并判断,一行里同时处理分割和非空校验:

out_vals = [
    {"date": parts[0], "time": parts[1], "size": parts[2], "name": parts[3]}
    for line in res.stdout.split("\n")
    if (parts := line.split())
]

这里parts := line.split()会先把每行分割后的结果赋值给parts,同时判断这个结果是否非空(空行split后得到空列表,布尔值为False,会被过滤),之后直接用parts生成字典,无需重复分割。

方法二:兼容旧版本Python的嵌套推导

如果需要兼容Python 3.7及更早版本,可以用嵌套的列表推导,通过临时变量保存分割结果:

out_vals = [
    {"date": parts[0], "time": parts[1], "size": parts[2], "name": parts[3]}
    for line in res.stdout.split("\n")
    for parts in [line.split()]
    if parts
]

这里for parts in [line.split()]相当于把每行分割后的结果赋值给parts,后续直接使用,同样避免了重复调用split(),同时通过if parts过滤空行。

两种写法都把分割和映射操作整合到了同一个列表推导中,符合Python“简洁、可读”的惯用风格,且无需额外的中间变量存储分割后的行列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:21:00