Home > 記事 > Python > python入門 > 【Python】permutations関数 | 順列

記事

【Python】permutations関数 | 順列

組み合わせや順列を生成する場合に用いるイテレータを組み合わせイテレータといいます。「順列」や「組み合わせ」「直積」がそれにあたります。その中でも今回は「順列」についてみてゆきます。

目次

  1. 順列(permutations)とは
  2. 並び替えのパターン
  3. 実装
  4. まとめ

順列(permutations)とは

異なるものの中からいくつかを選んで並び替える時の並び替えの列を順列といいます。例えば①、②、③から2個を選んで並び替える場合の順列は以下のようになります。

①②
①③
②①
②③
③①
③②

↑目次

並び替えのパターン

異なるn個のものからm個(n≧m)を取り出して並び変える際の並び替えのパターンをnPmと表記します。前に出した①、②、③から2個を取り出す場合は3P2になります。

n個のものからm個を取り出す場合のパターンは以下のようにして計算できます。

  1. n個のものから最初の1個を取り出すパターンはnパターン
  2. 1個取り出して減っているためn-1個から1個を取り出す(2個目を取り出す)パターンはn-1パターン
  3. 2個取り出して減っているためn-2個から1個を取り出す(3個目を取り出す)パターンはn-2パターン
  4. 上記を進めてm個目を取り出すときはn-m+1個から1個を取り出すパターンはn-m+1パターン
  5. 上記をすべて掛け合わせるとnPmになるのでnPm=n×(n-1)×(n-2)×…×(n-(m-1))

ちなみに階乗と呼ばれるものがあります。例えば3の階乗は3×2×1=6、4の階乗は4×3×2×1=24です。3の階乗は3!、4の階乗を4!などと表記します。n! = n×(n-1)×(n-2)×…×1です。

この階乗を用いてnPmを表すと以下のようになります。

nPm = n! / (n-m)!

3個の中から2個を取り出して並べる順列のパターンは3P2 = 3! / 1! = 6 となります。

↑目次

実装

いままで数学的な話をしてきましたが、実際にpythonを用いて実装してゆきます。順列を求めるにはpermutations()を使います。上記の例でいうと①,②,③から2つを取り出して順番に並べた場合をみてみると以下のようになります。

from itertools import permutations
for m in permutations(['①','②','③'],2):
    print(m)

実行結果

('①', '②')
('①', '③')
('②', '①')
('②', '③')
('③', '①')
('③', '②')

実際に上記で考えた結果どおりになっていることがわかります。

↑目次

まとめ

今回はpythonの順列における取り扱いにをみてきました。permutations関数を用いると簡単に順列を求めることができることが理解できたとおもいます。次回はcombinations関数(組合せ)についてみてゆきます。

 

↑目次

Comment on this article

コメントはまだありません。

Send comments

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  Please enter the letters of the image