Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリストのすべての順列を生成する方法【itertools.permutations活用】

Pythonでリストのすべての順列(並び替えのパターン)を生成したい場合は、標準ライブラリitertoolsモジュールが提供するpermutations()メソッドを使うのが最も簡単です。追加のインストールは不要で、importするだけですぐに利用できます。

基本的な使い方

itertools.permutations()にリストを渡すと、その要素をすべて並び替えた組み合わせをイテレータとして返します。結果をリストとして扱いたい場合は、list()で変換します。

import itertools

perms = list(itertools.permutations([1, 2, 3]))
print(perms)

実行結果

上記のコードを実行すると、次のような出力が得られます。

[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

ポイント解説

  • 戻り値はタプルのイテレータ:permutations()は各順列をタプルとして返します。リスト形式が必要な場合は[list(p) for p in perms]のように変換できます。
  • 順列の総数:要素数がn個の場合、順列は n!(階乗)個生成されます。例えば要素が3個なら 3! = 6 通りです。
  • 長さを指定可能:第2引数に長さrを指定すると、nPr の部分順列を取得できます。例:itertools.permutations([1, 2, 3], 2)

このように、itertools.permutations()を使えば、順列生成のための複雑な再帰処理を自分で書く必要がなく、簡潔かつ効率的にコードを記述できます。

  1. Pythonで文字列のすべての順列を取得する方法【itertoolsと再帰で解説】

    itertools.permutationsを使った方法 Pythonで文字列のすべての順列(並べ替え)を求める最も簡単な方法は、標準ライブラリのitertoolsモジュールにあるpermutations()関数を使用することです。この関数は、イテラブルなオブジェクトから要素を取り出し、指定した長さrの順列をタプルとして順番に返します。 結果を文字列として取得するには、関数の戻り値をループで処理し、各タプルの要素をjoin()で連結します。以下に具体例を示します。 from itertools import permutations result = [.join(p) for p in p

  2. Pythonで文字列のリストを並べ替える方法:sort()とsorted()の使い分け

    Pythonでは、文字列のリストを並べ替える方法が2つ用意されています。リスト自体を直接変更するsort()メソッドと、元のリストを保持したまま新しい並べ替え済みリストを作成するsorted()関数です。それぞれの特徴と使い方を解説します。 sort()メソッドでリストをその場で並べ替える sort()は、リストそのものを並べ替える「in-place(破壊的)」な操作です。元のリストの順序が直接変更されるため、戻り値を受け取る必要はありません。 >>> a = [Hello, My, Followers] >>> a.sort() >>>