如何将指定Python循环代码改写为单行(不含with open语句)
正确改写方式说明
首先,你原来的写法存在逻辑错误:winapps.list_installed()是返回已安装应用的可迭代对象,并不接受print(item, file=f)这类回调参数,这样的写法会直接触发语法或运行时错误。
符合需求的两种改写方式
方式1:单行for循环(最贴近原逻辑)
如果已经单独处理了文件打开(后续自行添加with open或其他文件操作代码),循环部分可以直接写成单行:
for item in winapps.list_installed(): print(item, file=f)
这只是把原多行循环的循环体和循环头合并到同一行,逻辑和原代码完全一致。
方式2:列表推导式(简洁写法)
也可以用列表推导式来消耗迭代器并完成打印操作:
_ = [print(item, file=f) for item in winapps.list_installed()]
这里用_接收列表推导的结果(因为print返回None,最终会得到一个全是None的列表),目的是触发所有迭代项的打印动作。
内容的提问来源于stack exchange,提问作者Cezar
相关产品推荐
相关产品推荐

