最佳答案
如何从一组列表中得到笛卡尔积(每一种可能的值组合)?
输入:
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), ...]
该技术的一个常见应用是避免深度嵌套循环。参见避免嵌套for循环获得更具体的重复。
如果你想要一个相同的列表与自身多次相乘的笛卡尔积,itertools.product
可以很好地处理这个问题。参见对列表中每对元素的操作或生成重复排列。