如何让Python使用固定有限集中的元素打印给定长度的所有列表?

时间:2013-10-24 19:51:10

标签: python list python-3.x

例如,我希望能够使用集合{0,1,2,3}中的元素获取长度为5的所有列表。

我确信有一个简单的答案,但我被困住了,我不知道怎么做!

3 个答案:

答案 0 :(得分:3)

您可能正在寻找itertools'combinations_with_replacement

list(itertools.combinations_with_replacement(range(4),2))
Out[18]: 
[(0, 0),
 (0, 1),
 (0, 2),
 (0, 3),
 (1, 1),
 (1, 2),
 (1, 3),
 (2, 2),
 (2, 3),
 (3, 3)]

(为了简洁而显示为n=2

答案 1 :(得分:2)

如果您不将(1,2)(2,1)视为不同,请使用roippi的答案。如果您这样做,itertools.product(如“Cartesian产品”)在这里工作:

>>> import itertools
>>> itertools.product(range(5), repeat=2)
[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3)]

答案 2 :(得分:0)

这样做:

import itertools    
list(itertools.product([0,1,2,3], repeat=5))

Combinations_with_replacement将捕获所有案例。它将(a,b)视为(a,b)的相同。在实践中,它只会输出有序结果(例如(1,3),而不是(3,1))