如何从一组列表中获得笛卡尔积(值的所有可能组合)?
输入:
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) ...]
24
请注意,“所有可能的组合”与“笛卡尔乘积”并不完全相同,因为在笛卡尔乘积中允许重复。
—
三联画
笛卡尔积是否存在非重复版本?
—
KJW 2013年
@KJW是,
—
NoBugs 2015年
set(cartesian product)
笛卡尔积中不应有重复项,除非输入列表本身包含重复项。如果您不希望笛卡尔积中有重复项,请使用
—
CamilB
set(inputlist)
所有输入列表。不在结果上。
@Triptych是什么?笛卡尔积的标准定义是一组。为什么会有这么多人支持?
—
PascalIv