【发布时间】:2014-04-08 22:13:05
【问题描述】:
感谢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
【问题讨论】:
标签: python list itertools cartesian-product