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

求无交换元组的笛卡尔积(输入输出均为生成器)

需求:生成去重的笛卡尔积(剔除重排重复元组)

给定N个迭代器,需生成它们的笛卡尔积(每个元素为含N个元素的元组),同时剔除可通过重排元素得到的重复元组(例如保留(1,2,7)则丢弃(2,1,7))。

本人熟悉itertools.product等组合函数,但均无法满足需求。由于输入为生成器,且需输出生成器(曾处理过占70+GB磁盘的超大规模笛卡尔积,无法加载到内存搜索),因此不能采用回溯查找交换对的方法,希望获取巧妙的数学技巧或基于迭代器next()操作的解决方案。

代码示例

from itertools import product as p
one, two, three = (1, 2, 3), (1, 2), (7, 8, 9)
output = list(p(one, two, three))

示例输出

(1, 1, 7)
[...]
(1, 2, 7)
[...]
(2, 1, 7)
[...]

可见实例化后存在至少2组可通过重排得到的重复元组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:52:06