你如何列出python中所有可能的安排?

时间:2016-11-11 23:13:50

标签: python python-3.x

我目前正在做一个简单的项目,我偶然发现了一个问题:
我需要一个包含4个数字的列表:说

L=[1,3,4,6]  

我需要完整的数字重新排列列表,所以:

L_arranged=[[1,3,4,6],[1,3,6,4],[1,6,3,4],...,[3,4,1,6]]  

任何想法?
即使是理论也会有用,谢谢你:)。

1 个答案:

答案 0 :(得分:4)

您正在寻找itertools.permutations

>>> from itertools import permutations
>>> [list(p) for p in permutations([1,3,4,6])]
[[1, 3, 4, 6], [1, 3, 6, 4], [1, 6, 3, 4], ..., [3, 4, 1, 6]]

如果您不需要改变(编辑)结果,可以直接将返回值转换为列表,从而产生元组

>>> list(permutations([1,3,4,6]))
[(1, 3, 4, 6), (1, 3, 6, 4), (1, 6, 3, 4), ..., (3, 4, 1, 6)]

更快,如果您打算仅将结果用作迭代器,则根本不需要将其投射

>>> for p in permutations([1,3,4,6]):
...     print(p)
(1, 3, 4, 6)
(1, 3, 6, 4)
(1, 6, 3, 4)
    ...
(3, 4, 1, 6)