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

能否在Python列表推导式中使用三元运算批量修改.hpp后缀文件名?

实现代码

可以直接通过列表推导式内嵌三元运算实现,正确的一行写法如下:

newfilenames = [x[:-3] + "h" if x[-3:] == "hpp" else x for x in filenames]

优化写法

推荐使用endswith方法判断后缀,避免文件名长度不足3位时触发索引异常,兼容性更强:

newfilenames = [x.removesuffix(".hpp") + ".h" if x.endswith(".hpp") else x for x in filenames]

注:Python 3.9+ 支持removesuffix方法,写法更直观。

原理解释

你之前的写法将判断条件放在了列表推导式末尾的过滤位,作用是仅保留符合条件的元素,因此会丢失所有非.hpp后缀的文件。把三元判断放在元素生成的位置,就会对遍历到的每个文件名都做分支处理,不会过滤掉任何原有元素,运行后即可得到预期输出:
['program.c', 'stdio.h', 'sample.h', 'a.out', 'math.h', 'hpp.out']


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:24:01