[python]itertoolsの使い方(シーケンス、組合せ)


アルゴリズムの問題を解決する際には,状況の数を考慮する必要がある場合がある.このとき使用できるライブラリはitertoolsです.

✅combinations(iterable, t)


反復可能なオブジェクトからt個の要素を有する組合せを抽出する
from itertools import combinations

a = "abcd"

for i in combinations(a, 2):
    print(i)

실행결과 :
('a', 'b')
('a', 'c')
('a', 'd')
('b', 'c')
('b', 'd')
('c', 'd')

✅combinations_with_replacement(iterable, t)


✍🏻iterableから要素数tの重複組合せを抽出する
from itertools import combinations_with_replacement

a = "abcd"

for i in combinations_with_replacement(a, 2):
    print(i)

실행결과 : 

('a', 'a')
('a', 'b')
('a', 'c')
('a', 'd')
('b', 'b')
('b', 'c')
('b', 'd')
('c', 'c')
('c', 'd')
('d', 'd')

✅permutations(iterable, t)


✍🏻iterableから要素個数tを抽出するシーケンス
最大長さはt値で指定できますが、t=noneに設定すると最大長さが返されます

from itertools import permutations

a = "abc"

for i in permutations(a):
  print(i)
  
 실행결과 :
 ('a','b','c')
 ('a','c','b')
 ('b','a','c')
 ('b','c','a')
 ('c','a','b')
 ('c','b','a')

✅product(iterables, repeat=1)


✍🏻複数のiterableのデカルトリターン
productは、複数のiterableを含んでもよいし、ペアで返してもよい.
from itertools import product

e1 = ["a", "b"]
e2 = [1, 2]

for i in product(e1,e2, repeat=1)
	print(i)
    
실행결과
("A", 1)
("A", 2)
("B", 1)
("B", 2)