获取长度为 n 的子列表的组合

Get combination of sublists with length n

假设我有一个列表 lst = [[[24, 25], [25, 26], [25, 35]], [[24, 25, 26], [26, 36, 46]]]。 我想计算来自其他子列表的所有元素的所有组合,但 不是 相同的子列表。在这个例子中它将是:

[[24, 25], [24, 25, 26]],
[[25, 26], [24, 25, 26]],
[[25, 35], [24, 25, 26]],
[[24, 25], [26, 36, 46]],
[[25, 26], [26, 36, 46]],
[[25, 35], [26, 36, 46]]

然而,这也应该能够产生超过 2 个元素的组合,即 lst = [[[1]], [[2], [3]], [[4], [5]]]; (length=len(lst) -> 3):

[[1], [2], [4]],
[[1], [2], [5]],
[[1], [3], [4]],
[[1], [3], [5]]

我试过 itertools.combinations(*lst) 但那只能生成长度为 2 的元组。 我怎样才能实现长度 n 与上述限制的组合?

使用itertools.product生成两个或更多迭代器的笛卡尔积:

from itertools import product

top = [[[24, 25], [25, 26], [25, 35]], [[24, 25, 26], [26, 36, 46]]]

for combo in product(*top):
  print(combo)

输出:

([24, 25], [24, 25, 26])
([24, 25], [26, 36, 46])
([25, 26], [24, 25, 26])
([25, 26], [26, 36, 46])
([25, 35], [24, 25, 26])
([25, 35], [26, 36, 46])