【发布时间】:2022-01-19 19:50:29
【问题描述】:
我正在寻找一种方法来实现递归函数,以在不使用 itertools 包的情况下获得相同列表 n 次的通用笛卡尔积。 该函数应该将列表和 n 次作为参数。
输出示例:
>>> l = [0, 2]
>>> print([(x,y) for x in l for y in l])
>>> [(0, 0), (0, 2), (2, 0), (2, 2)]
还有:
>>> l = [0,2]
>>> print([(x,y,z) for x in l for y in l for z in l])
>>> [(0, 0, 0),(0, 0, 2),(0, 2, 0),(0, 2, 2),(2, 0, 0),(2, 0, 2),(2, 2, 0),(2, 2, 2)]
或者
>>> l = [4,5,8]
>>> print([(x,y) for x in l for y in l])
>>> [(4, 4), (4, 5), (4, 8), (5, 4), (5, 5), (5, 8), (8, 4), (8, 5), (8, 8)]
等等。
我想对每个通用列表和每个 n 元组进行概括。 我找到了不同的方法来迭代地实现这一点,但没有一种方法是递归的。希望任何人都可以帮助我。
【问题讨论】:
标签: python recursion combinatorics cartesian-product