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

如何将生成locx与locy的两个Python列表推导式合并为一行?

合并两个列表推导式为一行代码

当然可以,合并后还能避免两次遍历point_objects列表,提升执行效率。这里提供两种常用实现方式:

方式1:返回元组(无需额外转换)

self.locx, self.locy = zip(*((pobj.x, pobj.y) for pobj in point_objects))

zip(*...)会将生成器产出的(x,y)元组拆解,把所有x值聚合为一组、y值聚合为另一组,最终返回两个元组分别赋值给self.locx和self.locy。

方式2:返回列表(若需列表类型)

如果你的代码必须使用列表而非元组,可通过map(list, ...)完成类型转换:

self.locx, self.locy = map(list, zip(*((pobj.x, pobj.y) for pobj in point_objects)))

补充说明

这两种方式都仅遍历point_objects一次,相比原代码的两次列表推导式,在数据量较大时性能优势更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:25:47