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

如何使用itertools.product实现有依赖关系的嵌套循环?

问题解答

你需要的嵌套循环本质是生成所有满足 i < j 的有序整数对,itertools.product 本身不支持两个输入迭代器之间的动态依赖,所以无法直接通过传固定的range参数实现符合要求的输出,有两种可行方案:

方案1:用itertools.product加过滤(符合指定用product的要求)

先生成全量笛卡尔积,再过滤出符合j > i的结果:

import itertools
n = 5
for i, j in itertools.product(range(n), range(n)):
    if j > i:
        # 此处写你的业务逻辑
        print((i, j))

该方案写法简单,缺点是会生成多余的不符合条件的配对,n数值较小时使用无压力。

方案2:用更适配场景的itertools.combinations(推荐)

你需要的无重复、按索引升序的二元组合,原生匹配itertools.combinations的功能,不需要额外过滤,性能更高,尤其适合n较大的场景:

import itertools
n = 5
for i, j in itertools.combinations(range(n), 2):
    # 此处写你的业务逻辑
    print((i, j))

以上两种方案的输出都和你原有的双层嵌套循环完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:54:05