如何在Python中生成所有可能的排列列表?

3

我目前正在自己进行一个简单的项目,但是我遇到了一个问题:
我需要有一个包含4个数字的列表:比如说

L=[1,3,4,6]  

我需要一个完整的数字重新排列列表,如下:
L_arranged=[[1,3,4,6],[1,3,6,4],[1,6,3,4],...,[3,4,1,6]]  

有什么想法吗?
即使是一个理论也会很有用,谢谢 :)


3
itertools.permutations()是Python标准库itertools模块中的一个函数,用于返回给定可迭代对象中所有元素的排列组合。 - Eli Sadoff
1个回答

5
您需要使用的是 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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接