Dapatkan jumlah loop di dalam loop Python FOR

259

Dalam forloop Python yang berulang pada daftar kita bisa menulis:

for item in list:
    print item

dan itu dengan rapi melewati semua elemen dalam daftar. Apakah ada cara untuk mengetahui dalam loop berapa kali saya telah mengulang sejauh ini? Misalnya, saya ingin mengambil daftar dan setelah saya memproses sepuluh elemen saya ingin melakukan sesuatu dengan mereka.

Alternatif yang saya pikirkan adalah sesuatu seperti:

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

Atau:

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

Apakah ada cara yang lebih baik (seperti halnya for item in list) untuk mendapatkan jumlah iterasi sejauh ini?

greye
sumber
1
Anda mungkin juga tertarik dengan jawaban untuk mengulangi daftar dalam potongan: stackoverflow.com/questions/434287/…
Dave Bacher
4
kemungkinan rangkap dari Mengakses indeks dalam Python untuk loop
Ciro Santilli i 冠状 病 六四 事件 事件 法轮功

Jawaban:

586

Cara pythonic adalah dengan menggunakan enumerate:

for idx,item in enumerate(list):
Nick Bastin
sumber
86

Setuju dengan Nick. Berikut ini adalah kode yang lebih rumit.

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

Saya telah mengomentari variabel jumlah dalam kode Anda.

Vikram Garg
sumber
9
Anda juga dapat menggunakan parameter enumerateopsional startuntuk mulai menghitung dengan 1 bukan 0, meskipun kemudian saya akan menggunakan nama OP countbukan idx.
Stefan Pochmann
Saya tidak tahu bahwa ada parameter mulai opsional. Senang mendengarnya. Terima kasih
Vikram Garg
1

Saya tahu pertanyaan yang agak lama tapi .... menemukan sesuatu yang lain jadi saya mencoba:

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

Menggunakan fungsi zip kita bisa mendapatkan elemen dan indeks.

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 ...

Lihat juga :

Python.org

Muhammad Faizan Fareed
sumber
0

Coba gunakan itertools.count([n])

Oso
sumber
2
Saya tidak yakin bagaimana Anda akan menggunakan hitungan di sini. Hitungan digunakan untuk menghasilkan urutan angka.
Codie CodeMonkey
tetapi bagaimana cara mereset nilai untuk iterasi berikutnya. Menggunakan itertools.count () tidak layak di sini.
Javed