For döngüsü kullanarak, bu durumda 1'den 5'e kadar döngü dizinine nasıl erişebilirim?
enumerate
Yinelediğiniz öğeyi içeren dizini almak için kullanın :
for index, item in enumerate(items):
print(index, item)
Ve Python'un dizinlerinin sıfırdan başladığını unutmayın, böylece yukarıdakilerle 0 ila 4 elde edersiniz. 1'den 5'e kadar sayımı istiyorsanız, bunu yapın:
for count, item in enumerate(items, start=1):
print(count, item)
Unidiomatik kontrol akışı
İstediğiniz şey, düşük seviyeli dillerin çoğunun programcılarının kullanacağı algoritma olan aşağıdakilerin Pythonic eşdeğeridir:
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
Veya for-each döngüsü olmayan dillerde:
index = 0
while index < len(items):
print(index, items[index])
index += 1
veya bazen Python'da daha yaygın olarak bulunur (ancak tek yönlü olarak):
for index in range(len(items)):
print(index, items[index])
Numaralandırma İşlevini Kullanma
Python'un enumerate
işlevi , indekslerin muhasebesini gizleyerek ve yinelenebilir olanı, enumerate
iki maddelik bir indeks ve tekrarlanabilir orijinalin sağlayacağı öğeyi veren başka bir yinelenebilir ( nesne) içine alarak görsel karmaşayı azaltır . Şöyle görünüyor:
for index, item in enumerate(items, start=0): # default is zero
print(index, item)
Bu kod örneği, Python'un deyimiyle kod ile olmayan kod arasındaki farkın kanonik örneğidir. Deyimsel kod, kullanılması amaçlandığı şekilde yazılan sofistike (ancak karmaşık olmayan) Python'dur. Deyimsel kod, dilin tasarımcıları tarafından beklenir, bu da genellikle bu kodun sadece daha okunabilir değil, aynı zamanda daha verimli olduğu anlamına gelir.
Sayma
Gittikçe indekslere ihtiyacınız olmasa bile, başlayabileceğiniz bir 1
dizi iterasyona (bazen istenir) ihtiyacınız vardır ve son sayı sizin sayınız olacaktır.
for count, item in enumerate(items, start=1): # default is zero
print(item)
print('there were {0} items printed'.format(count))
Sayı 1'den 5'e istediğinizi söylediğinizde (endeksin aksine) istemek istediğiniz şey gibi görünüyor.
Parçalamak - adım adım açıklama
Bu örnekleri parçalamak için, bir dizinle tekrarlamak istediğimiz öğelerin bir listesine sahip olduğumuzu varsayalım:
items = ['a', 'b', 'c', 'd', 'e']
Şimdi bu numaralandırılabilir bir sayım nesnesi yaratarak sayılabilir:
enumerate_object = enumerate(items) # the enumerate object
İlk öğeyi, next
fonksiyonla bir döngü halinde alacağımız bu tekrarlanabilir durumdan çıkarabiliriz :
iteration = next(enumerate_object) # first iteration from enumerate
print(iteration)
Ve görüyorum ki 0
, ilk endekse ve 'a'
ilk maddeye ait bir grup elde ediyoruz :
(0, 'a')
bu iki demetten elemanları çıkarmak için " dizi açma " olarak adlandırılabilir :
index, item = iteration
# 0, 'a' = (0, 'a') # essentially this.
ve incelediğimizde index
, ilk endekse, 0 ve item
ilk maddeye atıfta bulunuruz 'a'
.
>>> print(index)
0
>>> print(item)
a
Sonuç
- Python dizinleri sıfırdan başlar
- Bu dizinleri, yinelediğinizde yinelemeden almak için numaralandırma işlevini kullanın
- Numaralandırmayı deyimsel olarak kullanmak (demet açma ile birlikte) daha okunabilir ve bakımı kolay bir kod oluşturur:
Öyleyse bunu yapın:
for index, item in enumerate(items, start=0): # Python indexes start at zero
print(index, item)