2016-11-11 5 views
2

私は現在、自分で簡単なプロジェクトに取り組んでいます、と私は問題につまずい:
私は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()'](https://docs.python.org/2/library/itertools.html#itertoolsパーミュテーション)。 –

答えて

3

あなたは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)