2017-10-08 7 views
1

アイテムが繰り返されるときの順列の数を見つける方法は? たとえば、文字列aabの場合、次の出力が必要です。aabababaaPythonで繰返しを使って順列を計算する方法

+0

https://docs.python.org/2/:そのコードを実行することにより

from itertools import permutations iterable = "aab" print(set(permutations(iterable, len(iterable)))) 

を、私は次の出力を得ますライブラリ/ itertools.html#itertools.combinations_with_replacement、私だと思います –

+0

これらの順列のリスト、それらの順列のジェネレータ、それらの順列のプリントアウト、または順列の数の計算だけをしますか?あなたの最初の文と二番目の文は、この時点でお互いに矛盾します。また、入力文字列は短くても長くてもかまいません - 効率は重要ですか、単純さを好むでしょうか?最後に、リスト、ジェネレータ、またはプリントアウトが必要な場合は、順列の順番が重要であり、各順列は文字列である必要がありますか?結果がサンプル出力と正確に一致する必要がありますか? –

答えて

0

次は動作するはずです:

import itertools 
set(itertools.permutations('aab')) 

permutationsはすべての順列を生成しますが、それはそれはa1 a2 ba2 a1 bを区別することはできませんので、それのいくつかは出力です繰り返されます。ここでa1aの最初の出現であり、a2は2番目の出現です。したがって、ユニークな要素を保持するだけで済みます。コンストラクタが入力iterableをユニークなコレクションに変換するので、setはこれを行う良い方法です。あなたは、標準ライブラリitertoolsモジュールを使用することができます

関連する問題