enumerate() とはどういう意味ですか? 質問する

enumerate() とはどういう意味ですか? 質問する

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 整数値が使用されます。

おすすめ記事