我能有感谢名单的笛卡尔积到itertools.product()函数:不同尺寸的笛卡尔乘积
lists = [['A', 'B'], ['1', '2'], ['x', 'y']]
combinations = itertools.product(*lists)
# [('A', '1', 'x'), ('A', '2', 'y'), ..., ('B', '2', 'y')]
我要的是同样的事情,但是各种大小:
all_comb = magicfunction(lists)
# [('A', '1', 'x'), ..., ('B', '2', 'y'), ('A', '1'), ('A', '2'), ... ('2', 'y'), ... ('y')]
我看不到一个明显的方法来做到这一点。我需要一个方法,可以让我设置元组的最小和最大尺寸(我处理长列表,只需要7到3的大小,列表数量和它们的大小的组合)。
我的名单更像是:
lists = [['A', 'B', 'C'], ['1', '2'], ['x', 'y', 'z', 'u'], ...] # size may go to a few dozens
我误解组合的第二个论点的目的()到期到文档在其示例中使用字符串作为迭代的事实。有一个明显的方法来做到这一点。谢谢。我想我可以通过限制范围来设置最大尺寸。 – Sildar