python ある文字列を並べ替えて作成出来る全ての文字列を列挙

ある文字列を並べ替えて作成出来る全ての文字列を列挙する方法を説明します。

重複した文字列を取り除き、ソートする

手順は下記です。

  • permutationsにより順列を作成し、set型変数に追加する。
    • set型変数に追加することにより、重複した文字列を取り除くことが出来ます。
  • sortedでset型変数をソートし、結果を出力する。
from itertools import permutations
s = "add"
st = set()
for it in permutations(s):
    st.add("".join(it))
print(sorted(st))

"""出力
['add', 'dad', 'dda']
"""

参考:重複した文字列を取り除かない時の出力

重複した文字列を取り除かない時の、出力結果を示します。
比較のために、 重複した文字列を取り除く時のコードをコメントアウトして併記しています。

from itertools import permutations
s = "add"
# st = set()
l = []
for it in permutations(s):
    # st.add("".join(it))
    l.append("".join(it))
# print(sorted(st))
print(sorted(l))

"""出力
['add', 'add', 'dad', 'dad', 'dda', 'dda']
"""

コメント

タイトルとURLをコピーしました