[Python]itertoolsライブラリ


並べ替えと組合せ


ソートとは?


ソートとは、順番にリストされることです.

例えば、5人の中から3人を選んで椅子に座るとする.では、最初は5人のうち1人が座れますが、2番目は1人以外の4人が座れます.このように異なるnからr個を1列に選択すると,出現する可能性のある数はn(n−1)(n−2)・(n−r+1)である.
Pythonでは、for文でソートできます.
def permute(arr):
    result = [arr[:]]
    c = [0] * len(arr)
    i = 0
    while i < len(arr):
        if c[i] < i:
            if i % 2 == 0:
                arr[0], arr[i] = arr[i], arr[0]
            else:
                arr[c[i]], arr[i] = arr[i], arr[c[i]]
            result.append(arr[:])
            c[i] += 1
            i = 0
        else:
            c[i] = 0
            i += 1
    return result
itertools.並べ替えを使用すると、簡単に並べ替えができます.
import itertools
list(itertools.permutations(['1', '2', '3'], 2))

組み合わせとは?


組合せは順序と同様にnでr個を選択し,順序は重要ではない.
例えば、果物が4つあると仮定して、2つ選んでかごに入れます.入れさえすればいいので、順番は重要ではありません.イチゴも桃もイチゴも同じです.この場合,順序のように状況の数を計算することはできない.組み合わせの場合は、以下の方法に従います.
Pythonでは、for文で組み合わせが可能です.
lst = [1,2,3,4]
for i in range(len(lst)):
    for j in range(i+1, len(lst)):
        for k in range(j+1, len(lst)):
            print(lst[i], lst[j], [k])

itertools.コンビネーションを使用すると、コンビネーションを簡単に実現できます.
import itertools
list(itertools.combinations(['1', '2', '3', '4'], 3))
itertoolsライブラリを使用すると、計算速度が速くなります.