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

如何替换列表推导式中的嵌套for循环?

替代嵌套循环实现笛卡尔积的方法

当然可以,你可以借助Python标准库中的itertools.product来移除列表推导式里的嵌套for循环,实现完全一致的笛卡尔积组合效果,代码更简洁直观。

实现代码

import itertools

# id列表
id_list = [
    1, # UAE1S
    2, # UAE2S
    3, # UAE3S
]

# status列表
status_list = [
    'okay',
    'not okay',
    'unknown',
]

# 用itertools.product生成笛卡尔积,再转成目标字典结构
result = [{'id': idx, 'status': st} for idx, st in itertools.product(id_list, status_list)]

print(result)

说明

itertools.product(id_list, status_list)会直接生成两个列表所有元素的配对元组(比如(1, 'okay')、(1, 'not okay')等),相当于替你完成了嵌套循环的逻辑。之后用单层列表推导式把每个元组转换成你需要的字典结构,最终输出结果和你原来的代码完全一致。

如果你偏好更函数式的写法,也可以用map配合lambda,但可读性稍差:

result = list(map(lambda pair: {'id': pair[0], 'status': pair[1]}, itertools.product(id_list, status_list)))

总体来说,itertools.product是处理笛卡尔积场景的标准方案,能让代码更简洁易读,尤其是当需要组合更多列表时,优势会更明显。

内容的提问来源于stack exchange,提问作者Prosy A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:01:03