[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ライブラリを使用すると、計算速度が速くなります.
Reference
この問題について([Python]itertoolsライブラリ), 我々は、より多くの情報をここで見つけました
https://velog.io/@altjsvnf/Python-itertools-라이브러리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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
import itertools
list(itertools.permutations(['1', '2', '3'], 2))
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])
import itertools
list(itertools.combinations(['1', '2', '3', '4'], 3))
Reference
この問題について([Python]itertoolsライブラリ), 我々は、より多くの情報をここで見つけました https://velog.io/@altjsvnf/Python-itertools-라이브러리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol