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

如何使用嵌套列表推导式改写处理嵌套对象列表的Python循环代码?

用嵌套列表推导式替代双层循环生成目标列表

没问题!完全可以用嵌套列表推导式来实现这个需求,而且它的逻辑和你写的双层循环是一一对应的,写法还更简洁~

先回顾下你原来的双层循环逻辑:遍历mylist里的每个MyClassA对象,再遍历每个对象的attrA2列表里的MyClassB对象,最后把MyClassA的attrA1和MyClassB的attrB组成小列表,添加到结果里。

对应的嵌套列表推导式写法如下:

attrBlist = [[i.attrA1, j.attrB] for i in mylist for j in i.attrA2]

拆解一下这个推导式:

  • 最前面的[i.attrA1, j.attrB]:就是你每次append到结果里的元素,对应循环里的attrBlist.append([i.attrA1,j.attrB])
  • 中间的for i in mylist:对应外层循环,遍历所有MyClassA对象
  • 最后的for j in i.attrA2:对应内层循环,遍历当前MyClassA对象的attrA2列表里的MyClassB对象

运行这段代码后,输出结果和你原来的循环完全一致:

[[1, 10], [1, 100], [2, 20], [2, 200], [3, 30], [3, 300]]

这种写法既精简了代码行数,又保留了清晰的逻辑,非常适合处理这种多层遍历生成列表的场景,初学者多练几次就能熟练掌握啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:47:39