Ana içeriğe geç

Python'da For Döngüleri Eğitimi

Bir dizide veya bir pandas dataframe'inin satır ve sütunlarında yineleme yapmak için Python'da For Döngülerini nasıl uygulayacağınızı öğrenin.
· 5 dk. oku

Yapay Zeka ile Keşfedin

Giriş

Diğer programlama dillerinde olduğu gibi, Python'daki for döngüleri de biraz farklıdır; bir for anahtar sözcüğü gibi olmaktan çok bir yineleyici (iterator) gibi çalışırlar. Python'da C benzeri sözdizimi olan for(i=0; i<n; i++) yoktur; bunun yerine for in n kullanırsınız.

Bir list, string, tuple, set, array, data frame gibi diziler üzerinde yineleme yapmak için kullanılabilirler.

Bir öğe listesi verildiğinde, for döngüsü o listedeki her bir öğe üzerinde yineleme yapmak ve bunu yürütmek için kullanılabilir.

Bir dizi öğe üzerinde yineleme yapmak için For döngüleri range fonksiyonunu kullanır. range fonksiyonu, dizinin uzunluğuna bağlı olarak belirtilen aralıktaki sayılardan oluşan yeni bir liste döndürür.

Bir dizi üzerinde yineleme yaparken, yineleme için dizideki öğelerin indeksini de kullanabilirsiniz; ancak bunun anahtarı, önce listenin uzunluğunu hesaplamak ve ardından bu uzunluğun aralığında yineleme yapmaktır.

Python'daki for döngüleri sıfırdan indekslenir.

Hızlıca işin uygulama kısmına geçelim.

Ayrıca hızlı bir eğitim için bu videoyu da izleyebilirsiniz!

Döngülerin Uygulanması

Önce 1-10 arasındaki sayıları yazdırarak başlayalım. Python'daki for döngüleri sıfırdan indekslendiği için her yinelemede bir eklemeniz gerekir; aksi halde çıktı 0-9 olur.

for i in range(10):
    print (i+1)

# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10

Bir kelimenin, örneğin Datacamp ifadesinin karakterleri üzerinde for döngüsüyle yineleme yapalım ve yalnızca a harfini yazdıralım.

for i in "Datacamp":
    if i == 'a':
        print (i)

# a
# a
# a

Diyelim ki bir öğe listesi tanımlamak ve bu öğeler üzerinde tek tek yineleme yapmak istiyorsunuz.

sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in sequence:
    print (i)

# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial

Peki ya listenin uzunluğunu bulup sonra üzerinde yineleme yapmak isterseniz? Bunun için yerleşik len fonksiyonunu kullanır ve ardından dönen uzunluk çıktısına range uygularsınız.

Unutmayın, range her zaman tamsayı bir değer bekler.

sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
    print (sequence[i])

# 1
# 2
# 8
# 100
# 200
# datacamp
# tutorial

Harika! Peki len fonksiyonunu neden kullanmanız gerekiyor; doğrudan for i in numbers kullanamaz mısınız? Cevap basit. Diyelim ki mevcut bir listenin öğesini değiştirmek gibi dizinin indeksleriyle çalışmak veya onları değiştirmek istiyorsunuz; o zaman range(len(sequence)) gerekir.

sequence = [1, 2, 8, 100, 200, 'datacamp', 'tutorial']
for i in range(len(sequence)):
    element = sequence[i]
    if type(element) == int:
        sequence[i] = element + 4

print(sequence)

# [5, 6, 12, 104, 204, 'datacamp', 'tutorial']

Güzel, değil mi? if koşuluna göre listedeki öğeleri değiştirebildiniz.

Şimdi 1 - 20 arasındaki tek sayıları nasıl yazdırabileceğinize bakalım. Bunu yapmak için range fonksiyonunda üç şeyi tanımlamanız gerekir: Başlangıç noktası, bitiş noktası ve döngünün 1 - 20 arasındaki sayılar üzerinde artacağı artış değeri (veya adımlar).

for i in range(1,20,2):
    print (i)

# 1
# 3
# 5
# 7
# 9
# 11
# 13
# 15
# 17
# 19

İç İçe For döngüsü

for i in range(11):
    for j in range(i):
        print (i, end=' ')
    print()

# 1 
# 2 2 
# 3 3 3 
# 4 4 4 4 
# 5 5 5 5 5 
# 6 6 6 6 6 6 
# 7 7 7 7 7 7 7 
# 8 8 8 8 8 8 8 8 
# 9 9 9 9 9 9 9 9 9 
# 10 10 10 10 10 10 10 10 10 10 

Bir dataframe'in satır ve sütunlarında yineleme yapmak için For döngüsü

import pandas as pd

iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')

iris.head()
 sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
05.13.51.40.2setosa
14.93.01.40.2setosa
24.73.21.30.2setosa
34.63.11.50.2setosa
45.03.61.40.2setosa
len(iris)

# 150
for i in range(len(iris)):
    Class = iris.iloc[i,4]
    if Class == 'versicolor' and i < 70:
        print (Class)

# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor
# versicolor

Şimdi de sepal_length,sepal_width, petal_length ve petal_width sütunlarının her satırına iki ekleyelim.

columns = ['sepal_length','sepal_width','petal_length','petal_width']

for indices, row in iris.iterrows():
    for column in columns:
        iris.at[indices,column] = row[column] + 2

iris.head()
 sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
07.15.53.42.2setosa
16.95.03.42.2setosa
26.75.23.32.2setosa
36.65.13.52.2setosa
47.05.63.42.2setosa

Lambda fonksiyonu ile bir dizi üzerinde yineleme

Python'un lambda fonksiyonu, temel for döngüsüne kıyasla hızlı ve güçlüdür. Özellikle DataFrame'lerle çalışırken yaygın olarak kullanılır. Lambda fonksiyonu yardımıyla verinizi çok az kodla işleyebilirsiniz. Ancak, bazen anlaması zor olabilir.

x = [20, 30, 40, 50, 60]
y = []

for v in x :
    y += [v * 5]

print(y)

# [100, 150, 200, 250, 300]

Şimdi bunu bir lambda ve map fonksiyonuyla deneyelim.

Map, örneğin bir lambda fonksiyonunu ve bir x dizisini alır ve ardından yeni bir dizi döndürür.

x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)

print(y)

# <map object at 0x4063cc8>

Bir üreteç (generator) fonksiyonu döndürür ve üreteçten çıktı almak için; çıktıyı list'e argüman olarak geçirirsiniz.

x = [20, 30, 40, 50, 60]
y = map(lambda x: x * 5,x)

print(list(y))

# [100, 150, 200, 250, 300]

Şimdi bir adım geri çekilip hem for döngülü yolu hem de lambda/map() kombinasyonunu karşılaştıralım. Aralarındaki farkın map, lambda eklenmesi ve "for" ile "in"in kaldırılması olduğunu fark edeceksiniz. Ayrıca tek satırda kodlayabildiniz.

Sonuç

Bu temel Python For döngüsü eğitimini tamamladığınız için tebrikler.

For döngüleri her programlama dilinin bel kemiğidir ve konu Python olunca For döngülerini yazmak hiç de zor değildir; İngilizce bir cümle yazar gibi sezgisel hissettirir.

Python'da for döngüleri hakkında daha fazla bilgi edinmek isterseniz, DataCamp'in Python Data Science Toolbox (Bölüm 2) kursunu alın.

Bu eğitimle ilgili tüm sorularınızı aşağıdaki yorum bölümünde sormaktan çekinmeyin.

Konular

İlgili