Döngüler

Python bir kaç döngüsel yapıyı desteklemektedir. for ifadesi en çok kullanılanıdır. Ardışıl elemanların üzerinde gezinerek her birini döngü değişkenlerine atar. Eğer döngü gövdeniz basitse yorumlayıcının for döngüsü ek yükü toplam zamanın önemli kısmı olabilir. İşte burada karşımıza map fonksiyonu çıkmaktadır. map fonksiyonunu C kodu içerisinde taşınmış for olarak düşünebilirsiniz. Tek sınırlama map fonksiyon gövdesinin bir fonksiyon çağrısı olması gerektiğidir. map fonksiyonunun Python 3000'de liste tanımına faydası olması için çıkarılacağını unutmayın. Liste tanımları söz dizimsel faydaları yanında genelde denkleri olan map ifadelerinden daha hızlı veya en az o kadar hızlıdır.

İşte size konuyu direk sunan bir örnek. Bir kelime listesi üzerinde dönmek ve her birini büyük harfe dönüştürmek yerine,

		newlist = []
		for word in oldlist:
    			newlist.append(word.upper())
	

map fonksiyonu kullanarak döngüyü yorumlayıcıdan, derlenmiş C koduna bırakabilirsiniz:

		newlist = map(str.upper, oldlist)
	

Liste tanımlaması Python sürüm 2.0'da eklenmiştir. Sözdizimsel olarak yukarındaki kodu daha küçük ve daha verimli bir şekilde yazma yöntemi sunarlar:

		newlist = [s.upper() for s in oldlist]
	

Üretici ifadeleri Python sürüm 2.4'te eklenmiştir. Liste tanımlama veya map fonksiyona benzer şekilde işlev görürler, fakat listenin tamamının üretilmesi ek yükünden kaçınırlar. Yerine, liste üzerinde bit bit ilerleyen bir üretici nesnesi geri döndürürler:

		newlist = (s.upper() for s in oldlist)
	

Hangi metodu kullandığınız, ne tür verileri değiştirdiğiniz ve hangi Python sürümünü kullandığınıza bağlıdır.

Guido van Rossum'un döngü optimizasyonu ile ilgili gerçekten okumaya değer, daha detaylı açıklamalar olan bir yazısı vardır.