Pythonのitertools
は、効率的にイテレーション(繰り返し処理)を行うための標準ライブラリです。
特に、ループ処理を短縮し、コードをシンプルにするために活用できます。
ここではitertools
の基本的な関数と、具体的な使用例を紹介します。
Contents
count: 無限にカウントを生成
count
は、指定した数から始めて、指定のステップで増加する無限のカウンターを生成します。
デフォルトでは1ずつ増加します。
import itertools
for i in itertools.count(10, 2):
if i > 20:
break
print(i)
# 出力: 10, 12, 14, 16, 18, 20
cycle: イテラブルを無限に繰り返し
cycle
は、与えられたシーケンスを無限に繰り返します。
import itertools
count = 0
for item in itertools.cycle(['A', 'B', 'C']):
if count > 5:
break
print(item)
count += 1
# 出力: A, B, C, A, B, C
repeat: 指定回数だけ同じ値を繰り返し
repeat
は、1つの値を指定回数だけ繰り返します。
無限に繰り返すことも可能です。
import itertools
for item in itertools.repeat('Hello', 3):
print(item)
# 出力: Hello, Hello, Hello
combinations: 組み合わせ
combinations
は、指定された要素数のすべての組み合わせを生成します。
順番は考慮されません。
import itertools
items = ['A', 'B', 'C']
for combination in itertools.combinations(items, 2):
print(combination)
# 出力: ('A', 'B'), ('A', 'C'), ('B', 'C')
permutations: 順列
permutations
は、要素のすべての順列を生成します。
こちらは順番が異なるものも別の結果として扱います。
import itertools
items = ['A', 'B', 'C']
for permutation in itertools.permutations(items, 2):
print(permutation)
# 出力: ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')
product: 直積(デカルト積)
product
は、与えられたイテラブル同士のすべての組み合わせ(直積)を生成します。
import itertools
for product in itertools.product([1, 2], ['A', 'B']):
print(product)
# 出力: (1, 'A'), (1, 'B'), (2, 'A'), (2, 'B')
accumulate: 累積計算
accumulate
は、累積した和や積を計算します。
import itertools
import operator
numbers = [1, 2, 3, 4]
for result in itertools.accumulate(numbers):
print(result)
# 出力: 1, 3, 6, 10
また、operator.mul
を使うと積も計算できます。
for result in itertools.accumulate(numbers, operator.mul):
print(result)
# 出力: 1, 2, 6, 24
まとめ
itertools
を使うことで、複雑なループ処理や組み合わせ、順列を簡単に実装できます。
繰り返し処理が必要な場面や効率を重視したいときには、活用してみてください。