Pythonでは、イテレータの長さを取得するためには、イテレータをリストに変換し、そのリストをlen()
関数に渡すことで可能です。しかし、ジェネレータをリストに変換すると、ジェネレータは使い果たされます。
例えば、ファイルはPythonでイテレータとして扱うことができ、ファイルの行を反復処理します。ファイルの行数を数えるためには、次のようにすることが一つの方法です。
lines = len(list(open(fname)))
しかし、この方法ではファイル全体を一度にメモリに読み込むことになります。これはイテレータの目的(現在の行のみをメモリに保持する)を無視することになります。
ジェネレータは長さを持たないため、次のようなコードは動作しません。
lines = len(line for line in open(fname))
この問題を解決するためには、カウント関数を定義する以外に方法はありません。
def count(i):
c = 0
for el in i:
c += 1
return c
この関数を使用すると、イテレータの要素を一つずつ数えることができます。
以上がPythonでイテレータの長さを取得する方法についての説明です。この情報がPythonプログラミングに役立つことを願っています。