Python birçok yinelenebilir nesneyi destekler: listeler, demetler ve dizeler bunlardan yalnızca birkaçıdır. Python'un for döngüsü, bu nesneleri kolaylıkla işlemek için yeterince esnektir. Özellikle, sizi her girişin sayısal indeksi ile uğraşmaktan kurtarır.
Ancak bazen, örneğin bir koleksiyondaki öğeleri saymak veya filtrelemek için bir dizinle çalışmak isteyebilirsiniz. Hem dizini hem de öğeyi takip ederken bir dizi üzerinde yineleme yapmak için Python numaralandırma işlevini nasıl kullanabileceğinizi öğrenin.
Enumerate() Olmadan Yineleme
Aşağıdaki Python listesini göz önünde bulundurun.
my_fruits = ["elma", "armut", "muz"]
Listedeki her bir öğenin sayısını takip etmek istediğinizi varsayalım. Yapabilirdiniz for döngüsü kullan Birlikte Aralık() işlevi bu şekilde.
sayı = 0
için meyve içinde aralık (len (my_fruits)):
print (sayım, my_fruits[sayım])
saymak += 1
Bu işe yararken, birkaç kusuru vardır:
- Döngünün dışındaki sayımı takip etmeniz gerekir.
- Her yinelemede sayımı artırmanız gerekir.
- Döngünün uzunluğunu hesaplamanız gerekir.
- aralık (len()) yalnızca sayılabilir, dizine eklenebilir nesnelerle çalışır.
Daha iyi bir çözüm var: enumerate() işlevi.
Python'da enumerate() nasıl çalışır?
Python numaralandırmak() işlev bir veri toplama alır ve bir numaralandırma nesnesi döndürür. Numaralandırma nesnesi, nesnenin içerdiği her öğe için anahtar olarak bir sayaç içerir. bu numaralandırmak() işlev bunu her öğeye bir sayı atayarak yapar. Bu sayı, işlevin bu değere ulaşmak için tamamladığı yinelemelerin sayısına karşılık gelir.
Bu sayaç, koleksiyondaki öğelere erişmeyi ve hatta mümkün olduğunda koleksiyonu değiştirmeyi kolaylaştırır.
İle birlikte numaralandırmak(), döngünün uzunluğunu veya yineleme sayısını takip etmeniz gerekmez. Ayrıca indeks operatörünü kullanarak değere açıkça erişmekten de kaçınabilirsiniz, örneğin meyveler[sayım]. Numaralandırma işlevi, tüm bu özellikleri otomatik olarak işler.
Python enumerate() sözdizimi
Aşağıda enumerate() işlevinin genel sözdizimi verilmiştir.
numaralandırmak (yinelenebilir, başlangıç=0)
numaralandırma() iki argüman alır:
- yinelenebilir: Python'un yineleyebileceği bir veri toplama veya dizi. Örneğin. bir liste veya demet.
- start: numaralandırma işlevinin saymaya başlaması gereken dizin.
Enumerate() Nasıl Uygulanır?
nasıl olduğunu anlamak için numaralandırmak() işe yarıyor, bakalım gerçekte nasıl uygulanıyor.
tanımnumaralandırmak(sıra, başlangıç=0):
n = başlangıç
için element içinde sekans:
teslim olmak n, öğe
n += 1
içinde bulabileceğiniz bu fonksiyon, Python numaralandırma belgeleri, bir dizi ve varsayılan olarak 0 olan bir başlangıç bağımsız değişkeni alır.
İşlev daha sonra n değişkenini başlangıç değişkenine başlatır. Bu, yineleme sayısını takip eder.
Dizideki her öğe için takip eden for döngüsünde,
- teslim olmak döngü yürütmesini duraklatır.
- Ayrıca geçerli sayıyı (n) ve değeri (elem) döndürür.
- Döngü devam ettiğinde, n'yi artırır.
Dönüş değeri, anahtar/değer çiftlerinin bir nesnesidir.
eğer aramak için numaralandırmak() işlev ve meyve listesini iletin, bu çıktı değeri olacaktır.
my_fruits = ["elma", "armut", "muz"]
numaralandırmak_nesne = numaralandırmak (my_fruits)
yazdır (liste (enumerate_object))
# çıktı - [(0, 'elma'), (1, 'armut'), (2, 'muz')]
Farklı Bir Başlangıç Dizini ile Numaralandırın
Yukarıdaki örnekte başlangıç indeksini belirtmedik. Aşağıdaki örnek, başlangıç dizinini seçtiğiniz bir sayıya nasıl ayarlayabileceğinizi gösterir.
10'dan başlamak için aşağıdakileri yapın.
numaralandırmak_nesne = numaralandırmak (my_fruits, 10)
yazdır (liste (enumerate_object))
# çıktı - [(10, 'elma'), (11, 'armut'), (12, 'muz')]
Python numaralandırma() Örnekler
İşte nasıl kullanabileceğinizi gösteren bazı örnekler numaralandırmak() Python'da.
Bir Python Dizesini Numaralandırın
Bu örnekte, indeks 5'teki harfi almak için numaralandırmayı kullanacaksınız:
my_string = "makeuseof"
için saymak, değer içinde numaralandır (my_string):
eğer sayı == 5:
Yazdır (değer)
# çıktılar
Python Tuple'ı numaralandırın
Ayrıca kullanabilirsin numaralandırmak() üzerinde yineleme yapmak Python demeti. Bu örnekte, program, öğeleri görüntülemeden önce ilk yinelemede bir başlık yazdırır.
my_fruits_tuple = ("elmalar", "armutlar", "muzlar")
için indeks, değer içinde numaralandır (my_fruits_tuple):
eğer (indeks == 0):
print("Meyveler:")yazdır (değer)
/*
Meyveler:
elmalar
armutlar
muz
*/
Python Listesini Numaralandır
Aşağıdaki örnekte, 10'un üzerindeki listedeki tüm sayıları 2'ye kadar azaltmak için numaralandırmayı kullanıyorsunuz.
my_number_list = [10, 17, 15, 6]
için indeks, değer içinde numaralandır (my_number_list):
eğer (değer > 10):
my_number_list[indeks] -= 2yazdır (my_number_list)
# çıktı - [10, 15, 13, 6]
Yinelenebilirlerinizi Saymak için numaralandırmayı kullanın
Python şunları içerir numaralandırmak() yerleşik bir işlev olarak. Liste, tanımlama grubu veya dize gibi yinelenebilir bir koleksiyondaki öğeleri yinelemek ve saymak için kullanabilirsiniz. Her öğenin gerçek dizinini izlemenize yardımcı olabilir, ancak kendi başlangıç dizininizi de belirleyebilirsiniz. alternatif olarak kullanın Aralık() işlevi, sayılabilir ve indekslenebilir olmayan nesnelerle çalışıyorsanız.