Pythonでitertoolsを使用して、文字列の最初のn個の異なる順列を出力します
多数のオブジェクトの順列は、更新がさまざまなシーケンスでどのように存在するかを表しています。ただし、同じオブジェクトのシリーズに2つのオブジェクトがある場合があります。その場合、2つのシーケンスは等しくなります。この記事では、特定のオブジェクトのリストから一意のシーケンスのみを表す方法について説明します。
モジュールitertoolsには、これを実現するのに役立つ順列と呼ばれるメソッドがあります。一意の順列を取得するために、個別の要素のみを格納するsetメソッドを利用します。ただし、その前に、sortedメソッドを使用してソートされた順序で要素を取得します。
以下のプログラムでは、Kは、可能な一意の順列全体から表示する一意の要素の最大数です。whileループを使用して、最後のリストに一意の要素を追加し続け、まだ追加されていない場合にのみ表示します。セット。
例
from itertools import permutations def permutation_value(str, k): s = sorted(list(str)) p = permutations(s) m = 0 set_1 = set() str = '' while m < k: str = ''.join(p.__next__()) if str not in set_1: set_1.add(str) print(str) m += 1 str = "xyxxz" i = 12 permutation_value(str, i)
出力
上記のコードを実行すると、次の結果が得られます-
xxxyz xxxzy xxyxz xxyzx xxzxy xxzyx xyxxz xyxzx xyzxx xzxxy xzxyx xzyxx
-
指定された文字列のすべての順列を出力するPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −文字列の可能なすべての順列を表示するために必要な文字列が与えられます。 次に、以下の実装のソリューションを見てみましょう- 例 # conversion def toString(List): return ''.join(List) # permutations def permute(a, l, r): if l == r: print (toString(a)) e
-
Pythonで連結文字列を印刷するにはどうすればよいですか?
文字列とともに使用する場合、プラス(+)は連結演算子として定義されます。最初の文字列に2番目の文字列を追加します。 >>> s1 = TutorialsPoint >>> s2 = Hyderabad >>> print (s1+s2) TutorialsPoint Hyderabad