for row_number, row in enumerate(cursor):
Python では何をするのでしょうか?
enumerate
この文脈ではどういう意味ですか?
ベストアンサー1
のenumerate()
関数反復可能オブジェクトにカウンターを追加します。
したがって、 の各要素に対してcursor
、 を含むタプルが生成され(counter, element)
、for
ループはそれをそれぞれrow_number
およびにバインドしますrow
。
デモ:
>>> elements = ('foo', 'bar', 'baz')
>>> for elem in elements:
... print elem
...
foo
bar
baz
>>> for count, elem in enumerate(elements):
... print count, elem
...
0 foo
1 bar
2 baz
デフォルトでは、enumerate()
からカウントが始まります0
が、2 番目の整数引数を指定すると、その数値からカウントが始まります。
>>> for count, elem in enumerate(elements, 42):
... print count, elem
...
42 foo
43 bar
44 baz
Pythonで再実装する場合enumerate()
、それを実現するには2つの方法があります。1つはitertools.count()
カウントを行うのは1人で、もう1人は手動でカウントするジェネレータ関数:
from itertools import count
def enumerate(it, start=0):
# return an iterator that adds a counter to each element of it
return zip(count(start), it)
そして
def enumerate(it, start=0):
count = start
for elem in it:
yield (count, elem)
count += 1
のCでの実際の実装後者に近いもので、一般的なfor i, ...
展開ケースに単一のタプル オブジェクトを再利用するように最適化され、カウンターが大きくなりすぎて Python 整数オブジェクト (無制限) の使用を避けられなくなるまで、カウンターに標準の C 整数値が使用されます。