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

Pythonの組み込み関数を使って文字列の順列を表示するプログラム

Pythonでは、標準ライブラリitertoolsに含まれる組み込み関数 permutations(iterable) を使うことで、与えられた文字列のすべての順列(並べ替え)を簡単に取得できます。本記事では、この関数を活用して、入力された文字列の全順列を表示するプログラムを解説します。

実行例

たとえば、文字列「XYZ」が与えられた場合、出力は以下のようになります。

Input : string = 'XYZ'
Output : XYZ
XZY
YXZ
YZX
ZXY
ZYX

アルゴリズム

処理の流れは非常にシンプルで、次の3ステップで構成されます。

  1. 文字列を入力として受け取る。
  2. permutations() を使って、その文字列のすべての順列を生成する。
  3. 生成された順列を1つずつ画面に出力する。

サンプルコード

以下は、itertools.permutations を利用した完全なプログラム例です。

from itertools import permutations

def allPermutations(str1):
    # 文字列のすべての順列を取得
    per = permutations(str1)
    # すべての順列を出力
    print("Permutation Of this String ::>")
    for i in list(per):
        print(''.join(i))

# メインプログラム
if __name__ == "__main__":
    str1 = input("Enter the string ::>")
    allPermutations(str1)

実行結果

上記のプログラムを実行し、「abc」と入力した場合の出力例です。

Enter the string ::> abc
Permutation Of this String ::>
abc
acb
bac
bca
cab
cba

解説

permutations() 関数は、引数に渡されたイテラブル(ここでは文字列)の要素から、長さが同じで順序が異なるすべての組み合わせをタプルとして返します。文字列の場合、各タプルには個々の文字が格納されているため、''.join(i) を使ってタプルを再び文字列に結合してから出力しています。

なお、文字列の長さが n の場合、生成される順列の総数は n!(階乗)になります。つまり、3文字なら6通り、4文字なら24通りの並べ替えが得られます。文字数が増えると順列の数は急激に増加するため、長い文字列を扱う際は注意が必要です。

  1. PythonでBogoSort(順列ソート)を実装する方法を解説

    この記事では、BogoSort(ボゴソート)とも呼ばれる「順列ソート」をPythonで実装する方法について解説します。 問題の概要 問題文: 与えられた配列を、順列ソートの考え方を使って並べ替えます。 BogoSortは「生成と検証(generate and test)」というパラダイムに基づいたソートアルゴリズムです。仕組みは非常にシンプルで、以下の手順を繰り返します。 配列がソート済みかどうかを確認する ソート済みでなければ、配列をランダムにシャッフルする ソート済みになるまでこの処理を繰り返す 最悪の場合、計算量は O((n+1)!) となり、実用性はほとんどありませんが、アルゴリズ

  2. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列