从列表中获取n-length的所有组合

时间:2014-07-02 16:47:57

标签: python

我想知道如何从python的n-length列表中获取所有可能的组合。但有一个问题。我很难解释,因为英语不是我的母语。所以我举个例子:

如果我有一个清单:

my_List = [1, 2, 3, 4]

我希望它能获得长度为3的输出

(1, 1, 1)
(1, 1, 2)
(1, 1, 3)
(1, 1, 4)
etc etc

但我不想重复列表。我的意思是,如果我已经

(1, 1, 2)

我不需要

(1, 2, 1) and
(2, 1, 1)

这有什么意义吗?任何帮助都会被贬低

1 个答案:

答案 0 :(得分:1)

使用itertools.combinations_with_replacement

>>> import itertools
>>> my_List = [1, 2, 3, 4]
>>> for xs in itertools.combinations_with_replacement(my_List, 3):
...     print(xs)
...
(1, 1, 1)
(1, 1, 2)
(1, 1, 3)
(1, 1, 4)
(1, 2, 2)
(1, 2, 3)
...