列出所有组合

时间:2015-07-21 14:44:58

标签: python itertools

我有一个清单[1,2,3]。 我想要一个接收列表的函数和另一个数字,长度。

f([1, 2, 3], 4) = [
[1, 1, 1, 1],
[1, 1 , 1, 2],
[1, 1, 1, 3],
[1, 1, 2, 1],
[1, 1, 3, 1],
#and so on...
]

也许itertools有答案?

1 个答案:

答案 0 :(得分:6)

itertools.combinations_with_replacement是您寻求的功能。 在[17]中:i = itertools.combinations_with_replacement((1,2,3),4) 在[18]中:下一个(i) 出[18] :( 1,1,1,1) 在[19]:下一个(i) 出[19] :( 1,1,1,2) 在[20]中:下一个(i) 出[20] :( 1,1,1,3) 在[21]中:下一个(i) 出[21] :( 1,1,2,2) 在[22]中: 如果您想要所有组合的集合,包括仅按顺序不同的项目,请尝试以下方法: #从itertools.combinations_with_replace示例修改 #来自python doc。 import itertools 导入pprint def odometer(iterable,r):     pool = tuple(iterable)     n = len(游泳池)     对于itertools.product中的索引(range(n),repeat = r):         yield元组(在索引中为i的pool [i]) pprint.pprint(列表(里程表([1,2,3],4)))