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

Pythonの組み込み関数permutationsを使って文字列の順列をすべて表示する方法

ある文字列が与えられたとき、その文字列から作れるすべての順列(並べ替えの組み合わせ)を表示するのが本記事の目的です。Pythonでは、標準ライブラリ itertools に含まれる組み込み関数 permutations(iterable) を使うことで、この問題を簡単に解くことができます。

実行例

入力: string = 'XYZ'
出力: XYZ
        XZY
        YXZ
        YZX
        ZXY
        ZYX

3文字の文字列の場合、順列は 3! = 6通り生成されます。文字数が n の場合、順列は n! 通りになる点に注意してください。

アルゴリズム

ステップ1: 対象となる文字列を受け取る。
ステップ2: 文字列のすべての順列を取得する。
ステップ3: 取得した順列をすべて表示する。

サンプルコード

from itertools import permutations

def allPermutations(str1):
   # 文字列 'ABC' のすべての順列を取得
   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)

コードのポイント

itertools.permutations() は引数に渡したイテラブル(文字列やリストなど)の要素から、すべての順列をタプルとして返すイテレータを生成します。各タプルは ''.join(i) を使うことで、元の文字列と同じ形式に結合して表示できます。

実行結果

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

  1. Pythonで文字列からn番目の文字を削除するプログラムの書き方

    はじめにこの記事では、以下の問題に対する解決方法を解説します。問題文 − 与えられた文字列から、指定したインデックス(i番目)の文字を削除し、その結果を表示します。Pythonの文字列では、インデックスは必ず0から始まるという点に注意してください。例えば、「Tutorialspoint」という文字列の場合、各文字のインデックスは以下のように対応しています。T u t o r i a l s p o i n t 0 1 2 3 4 5 6 7 8 9 10 11 12 13それでは、この問題を解決するためのPythonスクリプトを見ていきましょう。実装例def remove(string

  2. 【Python】与えられた数がフィボナッチ数かどうかを判定する方法を解説

    本記事では、以下の問題文に対する解決策について詳しく学んでいきます。 問題の定義 数値 n が与えられたとき、その数がフィボナッチ数であるかどうかを判定します。 ご存知のとおり、n番目のフィボナッチ数は「直前の2つのフィボナッチ数の和」として定義されます。しかし、この漸化式以外にも、フィボナッチ数には興味深い数学的な性質が存在します。 フィボナッチ数の判定に使える重要な性質 ある数 n がフィボナッチ数であるのは、次の条件が成り立つ場合、かつその場合に限られます。 5×n² + 4 が完全平方数である または 5×n² − 4 が完全平方数である つまり、上記のどちらか一方(または両方)が