Bu makale Python'un standart modül kitaplığında bulunan "numaralandırma" işlevinin kullanımını açıklayacaktır. Numaralandırma işlevi, yinelenebilir herhangi bir nesnedeki öğelere bir "indeks" veya "sayım" atamanıza olanak tanır. Daha sonra, hem değerlere hem de onunla eşlenen bir sayıya erişebileceğiniz için bunlara daha fazla mantık uygulayabilirsiniz.
Sözdizimi ve Temel Örnek
Diğer programlama dillerinde, özellikle “C” dilinde ve “C” tarzı sözdizimine sahip diğer dillerde “for” döngüsü kullandıysanız, döngüde bir başlangıç indeksi belirtmiş olabilirsiniz. Başvuru için, "C"de ve benzer sözdizimine sahip diğer dillerde "for" döngüsü nasıl görünür:
for (int ben = 0; ben < 10; i++)printf("%d\n", ben);
Döngü ifadesi, sıfır değerine sahip bir değişken başlatır, bir eşikten küçük olup olmadığını kontrol eder ve döngü bloğu içindeki mantığı değerlendirdikten sonra (durma koşulu karşılanırsa) bir sayıyla artırır. Bu şekilde bir dizin kullanabilir ve onu döngü bloğunuzda referans verilen herhangi bir nesneye atayabilirsiniz. Buna karşılık, Python'da aynı sonuca sahip bir for döngüsü şöyle görünür:
i aralığında (0, 10):(i) yazdır
Python'daki "aralık" işlevi, varsayılan adımı 1 olan bir sayı aralığı dizisi belirlemenize olanak tanır. Üçüncü bir argüman sağlayarak adım değerini değiştirebilirsiniz. “Aralık” işlevindeki ikinci argüman, durma koşulu eşiğini ayarlamak için kullanılır. Her iki kod örneği de aşağıdaki çıktıyı üretir:
01
2
3
4
5
6
7
8
9
Bu döngüler, sadece bir sayı dizisi oluşturmak ve bunları döngü ifadesinin içindeki bir mantıkla ilişkilendirmek istiyorsanız iyi çalışır. Ancak, bunlara bir tür izlenebilir sayı atamak için başka bir iç içe döngü kullanmanız veya yinelenebilir herhangi bir türde “verim” işlevini kullanmanız gerekebilir. "Enumerate" yöntemi, tek bir ifadede yinelenebilirlere dizin atamayı kolaylaştırır, böylece birden çok iç içe döngü çalıştırma ihtiyacını ortadan kaldırır. Bu kod örneğine bir göz atın:
sayılar = ["sıfır", "bir", "iki", "üç", "dört", "beş"]numaralandırılmış_sayılar = numaralandır(sayılar)
dizin için, numaralandırılmış_sayılardaki öğe:
yazdır (dizin, öğe)
İlk ifade "numbers" adında yeni bir değişken tanımlar ve buna yinelenebilir (liste tipi) bir değişken atar. İkinci ifade, zorunlu bir argüman olarak yinelenebilir bir şey sağladığınız “enumerate” işlevinin kullanımını gösterir. Üçüncü ifade, "enumerated_numbers" değişkenini liste tipi bir nesneye dönüştürür. Varsayılan olarak, "numaralandır" işlevi yinelenebilir bir tür değil, "numaralandır" türünde bir nesne oluşturur, bu nedenle onu dönüştürmeniz gerekir. Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:
[(0, 'sıfır'), (1, 'bir'), (2, 'iki'), (3, 'üç'), (4, 'dört'), (5, 'beş')]"Enumerate" işlevi, yinelenebilir bir türdeki her öğeye bir sayı atar ve eşleştirilmiş değerlere sahip demetler oluşturur. Varsayılan olarak, sayım sıfırdan başlar.
Artık yinelenebilir bir türdeki her öğeye bir sayı atadığınıza göre, iç içe ifadeler yazmadan kolayca döngüye girebilirsiniz:
sayılar = ["sıfır", "bir", "iki", "üç", "dört", "beş"]numaralandırılmış_sayılar = numaralandır(sayılar)
dizin için, numaralandırılmış_sayılardaki öğe:
yazdır (dizin, öğe)
Yukarıda belirtilen kod örneği aşağıdaki çıktıyı üretecektir:
0 sıfır1 bir
2 iki
3 üç
4 dört
5 beş
Aşağıdaki örnekte gösterildiği gibi satır içi "enumerate" işlevini kullanarak kodu kısaltabilirsiniz:
sayılar = ["sıfır", "bir", "iki", "üç", "dört", "beş"]dizin için, numaralandırmadaki öğe (sayılar):
yazdır (dizin, öğe)
Numaralandırmayı Farklı Bir Başlangıç Dizini ile Kullanma
"numaralandır" işlevi, bir başlangıç dizini belirtebileceğiniz isteğe bağlı bir bağımsız değişken alır. Varsayılan olarak sıfırdır, ancak "start" argümanını kullanarak değiştirebilirsiniz:
sayılar = ["bir", "iki", "üç", "dört", "beş"]dizin için, numaralandırmadaki öğe(sayılar, başlangıç=1):
yazdır (dizin, öğe)
İkinci ifadede, başlangıç noktasını değiştirmek için “start=1” argümanı kullanılır. Yukarıda belirtilen kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:
1 bir2 iki
3 üç
4 dört
5 beş
Adımlarla Dizin Atama
Bu makalenin ilk bölümünde, "C" dilindeki "for" döngüsünün sözdizimi, sonraki her sayım veya dizin arasındaki adımları tanımlayabileceğiniz yerde gösterilir. Python'daki "enumerate" işlevinde böyle bir argüman yoktur, bu nedenle sayımlar arasında bir adım belirleyemezsiniz. Numaralandırılmış “for” döngü bloğu içindeki adımları uygulamak için gerçekten kendi mantığınızı yazabilirsiniz. Ancak, minimum kod yazarak özel adımları uygulamanın bir yolu vardır. Aşağıdaki örnek, "zip" ve "range" işlevlerini kullanan adımların uygulanmasını göstermektedir:
sayılar = ["sıfır", "iki", "dört", "altı"]dizin için, zip'teki öğe(aralık(0, 7, 2), sayılar):
yazdır (dizin, öğe)
"Zip" işlevi, iki veya daha fazla yinelenebilir öğeden aynı dizine sahip öğeleri alarak çiftler oluşturmanıza olanak tanır. Yani buradaki "zip" işlevi, "range(0, 7, 2)" işlevinden döndürülen yinelenebilir öğeden ve "sayılar" listesinden başka bir öğe alır ve ardından ikisini bir demet halinde eşleştirir. Nihai sonuç, "numaralandırma" işleviyle aynı bir uygulamadır, ancak "aralık(0, 7, 2)" işlevinde üçüncü bir bağımsız değişken olarak belirtilen özel adımlar (bu durumda 2). Yukarıda belirtilen kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:
0 sıfır2 iki
4 dört
6 altı
Sonuç
Python'daki "enumerate" işlevi, yinelenebilir bir nesnedeki öğelere bir sayı dizisi atayarak kısa kod yazmanıza olanak tanır. Yinelenebilir bir tür içindeki öğelerin dizinini takip etmek istiyorsanız bu gerçekten yararlıdır. Yinelenebilir türleri özel adımlarla "numaralandırmak" istiyorsanız, son örnekte açıklanan "zip" işlevini kullanın.