【发布时间】:2025-12-28 07:05:11
【问题描述】:
如何从一组列表中获取笛卡尔积(所有可能的值组合)?
输入:
somelists = [
[1, 2, 3],
['a', 'b'],
[4, 5]
]
期望的输出:
[(1, 'a', 4), (1, 'a', 5), (1, 'b', 4), (1, 'b', 5), (2, 'a', 4), (2, 'a', 5) ...]
【问题讨论】:
-
请注意,“所有可能的组合”与“笛卡尔积”并不完全相同,因为在笛卡尔积中,允许重复。
-
有没有不重复的笛卡尔积?
-
@KJW 是的,
set(cartesian product) -
笛卡尔积中不应有重复项,除非输入列表本身包含重复项。如果您希望笛卡尔积中没有重复项,请在所有输入列表中使用
set(inputlist)。不在结果上。 -
在数学上,笛卡尔积是一个集合,因此笛卡尔积不包含重复项。另一方面,如果输入有重复,
itertools.product将在输出中有重复。所以itertools.product严格来说不是笛卡尔积,除非你将输入包装在@CamilB 中提到的set。
标签: python list cartesian-product