Pythonのイテレーターを分かりやすく解説してみた
みなさまおはこんばんにちは、せなです
今回はイテレーターについて解説したいと思います
イテレーターとは
イテレーターはlist、tupleなど配列に関係するものの次のデータに対して順番にアクセスし、データを処理していくことを指します
そのため普段意識していないだけでイテレーターはよく使われています
代表的なものですと「for
」文がそれにあたります
以下のコードを見て下さい
list = ['a', 'b', 'c', 'd']
for s in list:
print(s)
----結果----
a
b
c
d
ここで使われている「for s in list
」では「list
」の要素に順にアクセスし「s
」へと格納しています
この格納される時に内部的にイテレーターの機能が実行されています
イテレーターの関数:iter()
以下のコードを見て下さい
list = ['a', 'b', 'c', 'd']
i = iter(list)
next(i)
'a'
next(i)
'b'
next(i)
'c'
next(i)
'd'
next(i)
StopIteration
イテレーターはリストなどに対して「iter()」を使用することでイテラルオブジェクト化します
そのオブジェクトに対して「next()」を使用することで次の要素に進み、最後まで行くと「StopIteration」エラーが発生します
イテレーター生成関数:itertools()
Pythonにはライブラリにitertoolsというイテレーターオブジェクトの操作を行うことができる関数があります
ドキュメント:itertools()
以下にいくつかの簡単なイテレーター関数を書いておきます
「accmulate()
」はリストの累積和をイテレーターとして返します
import itertools
ary = [1, 2, 3, 4, 5]
sum = itertools.accumulate(ary)
list(sum)
----結果----
[1, 3, 6, 10, 15]
「chain()
」は与えられた要素を先頭から返し、すべての値を返してイテレーターを作成します
cha = itertools.chain('abc','def')
list(cha)
----結果----
['a', 'b', 'c', 'd', 'e', 'f']
「groupby()
」は先頭から同じKeyを持つものをグループ化し、それぞれをイテレーターとして返します
groups = ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'D', 'A', 'A', 'B', 'B', 'B']
gr = itertools.groupby(groups)
for key, group in gr:
f'{key}: {list(group)}'
----結果----
A: ['A', 'A', 'A', 'A']
B: ['B', 'B', 'B']
C: ['C', 'C']
D: ['D']
A: ['A', 'A']
B: ['B', 'B', 'B']
最後に
最初にザックリ解説、後半に使い方を簡単に解説しました
ここまで読んで下さりありがとうございました
何かの助けになれたなら幸いです
ではでは~
ディスカッション
コメント一覧
まだ、コメントがありません