Python FORループ内のループ数を取得する


259

forリストを反復するPython ループでは、次のように記述できます。

for item in list:
    print item

リストのすべての要素をきちんと調べます。ループ内でこれまでに何回ループしたかを知る方法はありますか?たとえば、リストを取得し、10個の要素を処理した後、それらを使用して何かを実行したいとします。

私が考えた代替案は次のようなものになるでしょう:

count=0
for item in list:
    print item
    count +=1
    if count % 10 == 0:
        print 'did ten'

または:

for count in range(0,len(list)):
    print list[count]
    if count % 10 == 0:
        print 'did ten'

for item in listこれまでの反復数を取得するためのより良い方法は(と同じように)ありますか?


1
また、チャンクでリストを反復処理への回答に興味があるかもしれません:stackoverflow.com/questions/434287/...
デイブ・バッハー

回答:



86

ニックに同意する。これはより複雑なコードです。

#count=0
for idx, item in enumerate(list):
    print item
    #count +=1
    #if count % 10 == 0:
    if (idx+1) % 10 == 0:
        print 'did ten'

コードのcount変数をコメントアウトしました。


9
enumerateのオプションのstartパラメーターを使用して、0ではなく1から列挙を開始することもできますが、その場合はのcount代わりにOPの名前を使用しidxます。
Stefan Pochmann 2017年

オプションの開始パラメーターがあることを私は知りませんでした。知っておくと良い。ありがとう
Vikram Garg

1

私はかなり古い質問を知っていますが、他のことに目を向けたので、私は自分のショットを与えます:

[each*2 for each in [1,2,3,4,5] if each % 10 == 0])

1

zip関数を使用すると、要素とインデックスの両方を取得できます。

countries = ['Pakistan','India','China','Russia','USA']

for index, element zip(range(0,countries),countries):

         print('Index : ',index)
         print(' Element : ', element,'\n')

output : Index : 0 Element : Pakistan ...

また見なさい:

Python.org


0

使ってみてください itertools.count([n])


2
ここでcountをどのように使用するかわかりません。カウントは、数列を生成するために使用されます。
Codie CodeMonkey 2013

しかし、次の反復のために値をどのようにリセットするでしょうか。ここではitertools.count()を使用することはできません。
Javed
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.