Pythonは配列の順列と組み合わせを見つける直接的なメソッドを提供します。
まず、itertoolsパッケージをインポートして、Pythonでpermutationsメソッドを実装します。 このメソッドはリストを入力として受け取り、すべての順列をリスト形式で含むタプルのオブジェクトリストを返します。
from
itertools
import
permutations
perm
=
permutations()
for
i
in
list
(perm):
print
(i)
アウトプットします。
(1, 2, 3)(1, 3, 2)(2, 1, 3)(2, 3, 1)(3, 1, 2)(3, 2, 1)
入力シーケンスの長さがnであれば、n!個の並べ換えを生成する。
長さLの並べ換えを得たい場合は、このように実装する。
from
itertools
import
permutations
perm
=
permutations(,
2
)
for
i
in
list
(perm):
print
(i)
アウトプットします。
(1, 2)(1, 3)(2, 1)(2, 3)(3, 1)(3, 2)
入力シーケンスの長さをn、入力パラメータをrとすると、nCr * r!の並べ換えを生成します。
このメソッドはリストと入力rを入力として受け取り、リスト形式で長さがrのすべての可能な組み合わせを含むタプルのオブジェクトリストを返します。
from
itertools
import
combinations
comb
=
combinations(,
2
)
for
i
in
list
(comb):
print
(i)
出力されました。
(1, 2)(1, 3)(2, 3)
- 組み合わせは、入力の辞書式ソート順で出力されます。 したがって、入力リストがソートされていれば、組合せタプルはソート順に生成される。
from
itertools
import
combinations
comb
=
combinations(,
2
)
for
i
in
list
(comb):
print
(i)
出力します。
(2, 1)(2, 3)(1, 3)
- 要素はその値ではなく、位置によってユニークなものとして扱われます。 そのため、入力要素が一意であれば、各組み合わせで値が繰り返されることはありません。
from
itertools
import
combinations
comb
=
combinations(,
2
)
for
i
in
list
(comb):
print
(i)
出力される。
(1, 1)(1, 3)(1, 3)
- 同じ要素同士を組み合わせたい場合は、combinations_with_replacementを使います。
from
itertools
import
combinations_with_replacement
comb
=
combinations_with_replacement(,
2
)
for
i
in
list
(comb):
print
(i)
出力します。
(1, 1)(1, 2)(1, 3)(2, 2)(2, 3)(3, 3)
この記事はRaju Varshney氏によって寄稿されたものです。 あなたが間違っている何かを見つけるか、またはあなたが上で説明したトピックに関するより多くの情報を共有したい場合はコメントを書いてください
記事タグ 。実践タグ: - 要素はその値ではなく、位置によってユニークなものとして扱われます。 そのため、入力要素が一意であれば、各組み合わせで値が繰り返されることはありません。