Menggunakan for for, bagaimana cara mengakses indeks loop, dari 1 hingga 5 dalam hal ini?
Gunakan enumerate
untuk mendapatkan indeks dengan elemen saat Anda mengulanginya:
for index, item in enumerate(items):
print(index, item)
Dan perhatikan bahwa indeks Python dimulai dari nol, sehingga Anda akan mendapatkan 0 hingga 4 dengan yang di atas. Jika Anda ingin menghitung, 1 hingga 5, lakukan ini:
for count, item in enumerate(items, start=1):
print(count, item)
Aliran kontrol tidak otomatis
Apa yang Anda minta adalah persamaan Pythonic dari yang berikut, yang merupakan algoritma yang akan digunakan oleh kebanyakan programmer dari bahasa tingkat rendah:
index = 0 # Python's indexing starts at zero
for item in items: # Python's for loops are a "for each" loop
print(index, item)
index += 1
Atau dalam bahasa yang tidak memiliki untuk-setiap loop:
index = 0
while index < len(items):
print(index, items[index])
index += 1
atau kadang-kadang lebih umum (tetapi tidak langsung) ditemukan dalam Python:
for index in range(len(items)):
print(index, items[index])
Gunakan Fungsi Hitung
enumerate
Fungsi Python mengurangi kekacauan visual dengan menyembunyikan akuntansi untuk indeks, dan merangkum iterable ke iterable lain ( enumerate
objek) yang menghasilkan dua item tuple indeks dan item yang akan disediakan iterable asli. Itu terlihat seperti ini:
for index, item in enumerate(items, start=0): # default is zero
print(index, item)
Contoh kode ini cukup baik contoh kanonik perbedaan antara kode yang idiomatik dari Python dan kode yang tidak. Kode idiomatik adalah Python yang canggih (tapi tidak rumit), ditulis dengan cara yang seharusnya digunakan. Kode idiomatik diharapkan oleh para perancang bahasa, yang berarti bahwa biasanya kode ini tidak hanya lebih mudah dibaca, tetapi juga lebih efisien.
Mendapatkan hitungan
Sekalipun Anda tidak membutuhkan indeks saat berjalan, tetapi Anda membutuhkan hitungan iterasi (kadang-kadang diinginkan) Anda bisa mulai dengan 1
dan angka terakhir akan menjadi hitungan Anda.
for count, item in enumerate(items, start=1): # default is zero
print(item)
print('there were {0} items printed'.format(count))
Hitungan tampaknya lebih dari apa yang ingin Anda minta (bukan indeks) ketika Anda mengatakan ingin dari 1 hingga 5.
Memecahnya - penjelasan langkah demi langkah
Untuk memecah contoh-contoh ini, katakan kita memiliki daftar item yang ingin kita ulangi dengan indeks:
items = ['a', 'b', 'c', 'd', 'e']
Sekarang kita meneruskan iterable untuk enumerate, membuat objek enumerate:
enumerate_object = enumerate(items) # the enumerate object
Kita dapat menarik item pertama dari iterable yang akan kita dapatkan dalam satu loop dengan next
fungsi:
iteration = next(enumerate_object) # first iteration from enumerate
print(iteration)
Dan kami melihat kami mendapatkan tuple dari 0
, indeks pertama, dan 'a'
, item pertama:
(0, 'a')
kita bisa menggunakan apa yang disebut sebagai " sequence unpacking " untuk mengekstrak elemen dari dua tuple ini:
index, item = iteration
# 0, 'a' = (0, 'a') # essentially this.
dan ketika kami memeriksa index
, kami menemukan itu mengacu pada indeks pertama, 0, dan item
mengacu pada item pertama 'a'
,.
>>> print(index)
0
>>> print(item)
a
Kesimpulan
- Indeks python mulai dari nol
- Untuk mendapatkan indeks ini dari iterable saat Anda mengulanginya, gunakan fungsi enumerate
- Menggunakan enumerasi dengan cara idiomatis (bersama dengan tuple unpacking) menciptakan kode yang lebih mudah dibaca dan dipelihara:
Jadi lakukan ini:
for index, item in enumerate(items, start=0): # Python indexes start at zero
print(index, item)