0
user Programlama Akademi
05-01-2025 11:58 AM
Python

Python 3'te Listeleri Anlamak

Giriş

Bir liste, Python'da değiştirilebilir (mutable), sıralı bir eleman dizisidir. Listenin içinde bulunan her bir eleman veya değere öğe denir. Tıpkı karakterlerin tırnak işaretleri arasında tanımlandığı dizeler (string) gibi, listeler de değerlerin köşeli parantezler [ ] arasında tanımlanmasıyla oluşturulur.

Listeler, birçok ilişkili değerle çalışmak istediğinizde harika bir araçtır. Verileri bir arada tutmanızı, kodunuzu kısaltmanızı ve aynı yöntemleri ve işlemleri birden çok değer üzerinde aynı anda gerçekleştirmenizi sağlar.

Python listelerini ve diğer veri yapıları olan koleksiyon türlerini düşündüğümüzde, bilgisayarınızdaki farklı koleksiyonları göz önünde bulundurmak faydalı olabilir: dosya koleksiyonunuz, müzik çalma listeleriniz, tarayıcı yer imleriniz, e-postalarınız, bir akış hizmetinde erişebileceğiniz video koleksiyonu ve daha fazlası.


Ön koşullar

Bilgisayarınızda veya sunucunuzda Python 3'ün yüklü olması ve bir programlama ortamınızın ayarlanmış olması gereklidir. Henüz bir programlama ortamı ayarlamadıysanız, işletim sisteminize uygun olarak (Ubuntu, CentOS, Debian vb.) yerel bir programlama ortamı kılavuzlarına başvurabilirsiniz.


Dize Listeleri

Başlamak için, dize veri türüne sahip öğeler içeren bir liste oluşturalım:

Bilgi: Bu öğreticideki örnek kodu takip etmek için, yerel sisteminizde python3 komutunu çalıştırarak bir Python etkileşimli kabuğu açın. Ardından, örnekleri >>> isteminden sonra kopyalayıp yapıştırabilir veya düzenleyebilirsiniz.

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']

Listeyi yazdırdığımızda, çıktı tam olarak oluşturduğumuz listeyle aynı olur:

print(sea_creatures)
Çıktı
['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']

Sıralı bir eleman dizisi olarak, listedeki her bir öğe tek tek indekslenerek çağrılabilir. Listeler, daha küçük parçalardan oluşan birleşik bir veri türüdür ve çok esnektir çünkü değerler eklenebilir, kaldırılabilir ve değiştirilebilir. Birçok değeri saklamanız veya değerler üzerinde yinelemeler yapmanız gerektiğinde ve bu değerleri kolayca değiştirmek istiyorsanız, muhtemelen liste veri türleriyle çalışmak isteyeceksiniz.

Bu öğreticide, Python'da listelerle çalışmanın bazı yollarını inceleyeceğiz.


Listelerde İndeksleme

Bir listedeki her bir öğe, sıfırdan başlayan bir tamsayı değeri olan bir indeks numarasına karşılık gelir.

deniz_canlıları listesi için indeks dağılımı şu şekildedir:

‘köpekbalığı’     ‘mürekkep balığı’    ‘kalamar’      ‘mantis karidesi’      ‘deniz anası’


           0                            1                           2                          3                                  4


İlk öğe olan 'köpekbalığı' dizesi 0 indeks numarasından başlar ve liste 'deniz anası' öğesi ile4 indeks numarasında sona erer.

Her öğenin bir indeks numarası olduğu için, Python'da diğer sıralı veri türleriyle yaptığımız gibi listelere erişebilir ve onları değiştirebiliriz.

Şimdi bir listenin belirli bir öğesini indeks numarasına atıfta bulunarak çağırabiliriz:

print(deniz_canlıları[1])
Çıktı
mürekkep balığı

Bu listenin indeks numaraları 0-4 arasında değişmektedir. Yani herhangi bir öğeyi tek tek çağırmak için indeks numaralarını şu şekilde kullanabiliriz:

deniz_canlıları[0] = 'köpekbalığı'
deniz_canlıları[1] = 'mürekkep balığı'
deniz_canlıları[2] = 'kalamar'
deniz_canlıları[3] = 'mantis karidesi'
deniz_canlıları[4] = 'deniz anası'

Eğer deniz_canlıları listesine 4'ten büyük bir indeks numarasıyla erişmeye çalışırsak, bu geçersiz olacağı için sınır dışı bir hata alırız:

print(deniz_canlıları[18])
Çıktı
IndexError: list index out of range

Pozitif indeks numaralarının yanı sıra, listenin sonundan geriye doğru sayarak negatif indeks numaralarıyla da öğelere erişebiliriz, negatif indeksler -1'den başlar. Bu, özellikle uzun bir listeye sahipseniz ve listenin sonuna doğru bir öğeye odaklanmak istediğinizde kullanışlıdır.

Aynı deniz_canlıları listesi için negatif indeks dağılımı şu şekildedir:

‘köpekbalığı’           ‘mürekkep balığı’       ‘kalamar’           ‘mantis karidesi’        ‘deniz anası’


       -5                                     -4                           -3                            -2                                -1


Bu durumda, 'kalamar' öğesini negatif indeks numarası ile yazdırmak istersek şu şekilde yapabiliriz:

print(deniz_canlıları[-3])
Çıktı
kalamar

Listelerdeki dize öğelerini + operatörü ile başka dizelerle birleştirebiliriz:

print('Sammy bir ' + deniz_canlıları[0])
Çıktı
Sammy bir köpekbalığıdır

0 indeks numarasındaki dize öğesini 'Sammy bir ' dizesiyle birleştirebildik. Ayrıca, + operatörünü kullanarak 2 veya daha fazla listeyi de birleştirebiliriz.

İndeks numaraları sayesinde bir listedeki her öğeye ayrı ayrı erişebilir ve bu öğelerle çalışabiliriz.


Listelerdeki Öğeleri Değiştirme

Listelerdeki öğeleri değiştirmek için indeksleme kullanarak bir indeks numarasını farklı bir değere eşitleyebiliriz. Bu sayede listeler üzerinde daha fazla kontrol sahibi oluruz ve içerdiği öğeleri değiştirebiliriz.

Örneğin, indeks 1'deki 'mürekkep balığı' öğesini 'ahtapot' olarak değiştirmek istersek, bunu şu şekilde yapabiliriz:

deniz_canlıları[1] = 'ahtapot'

Artık deniz_canlıları listesini yazdırdığımızda, liste farklı olacaktır:

print(deniz_canlıları)
Çıktı
['köpekbalığı', `'ahtapot'`, 'kalamar', 'mantis karidesi', 'deniz anası']

Negatif bir indeks numarası kullanarak da bir öğenin değerini değiştirebiliriz:

deniz_canlıları[-3] = 'blobfish'
print(deniz_canlıları)
Çıktı
['köpekbalığı', 'ahtapot', `'blobfish'`, 'mantis karidesi', 'deniz anası']

Şimdi -3 indeksindeki 'blobfish', pozitif indeks 2'deki 'kalamar'ın yerini almıştır.

Listelerdeki öğeleri değiştirebilmek, listeleri verimli bir şekilde değiştirme ve güncelleme yeteneği sağlar.


Listelerde Dilimleme

Ayrıca listeden birkaç öğeyi çağırabiliriz. Diyelim ki sea_creatures'ın yalnızca orta öğelerini yazdırmak istiyoruz, bunu bir dilim oluşturarak yapabiliriz. Dilimlerle, iki nokta üst üste [x:y] ile ayrılmış bir dizin numarası aralığı oluşturarak birden fazla değeri çağırabiliriz:

print(deniz_canlıları[1:4])
Çıktı
['ahtapot', 'blobfish', 'mantis karidesi']

Dilim oluştururken, [1:4] ifadesinde ilk indeks numarası dilimin başladığı (dahil) yerdir ve ikinci indeks numarası dilimin bittiği (hariç) yerdir. Bu nedenle, yukarıdaki örnekte indeks 1, 2 ve 3'teki öğeler yazdırılır.

Listenin herhangi bir ucunu dahil etmek istiyorsak, list[x:y] sözdizimindeki sayılardan birini atlayabiliriz. Örneğin, sea_creatures listesinin ilk 3 öğesini yazdırmak istiyorsak — ki bunlar 'köpekbalığı', 'ahtapot', 'blobfish' olurdu — bunu yazarak yapabiliriz:

print(deniz_canlıları[:3])
Çıktı
['köpekbalığı', 'ahtapot', 'blobfish']

Bu, listenin başından başlayıp indeks 3'ten hemen önce durur.

Listenin sonundaki tüm öğeleri dahil etmek için sözdizimi tersine çevirebiliriz:

print(deniz_canlıları[2:])
Çıktı
['blobfish', 'mantis karidesi', 'deniz anası']

Pozitif indeks numaraları gibi, negatif indeks numaraları da kullanabiliriz:

print(deniz_canlıları[-4:-2])
print(deniz_canlıları[-3:])
Çıktı
['ahtapot', 'blobfish']
['blobfish', 'mantis karidesi', 'deniz anası']

Dilimleme sırasında kullanabileceğimiz son parametreye stride denir, bu parametre ilk öğe alındıktan sonra kaç öğe ileri gidileceğini belirtir. Şimdiye kadar stride parametresini atladık ve Python varsayılan olarak stride'ı 1 kabul etti, bu nedenle iki indeks numarası arasındaki her öğe alındı.

Bu yapı için sözdizimi liste[x:y:z]'dir, burada z stride'ı ifade eder. Daha büyük bir liste oluşturalım, dilimleyelim ve stride değerini 2 yapalım:

sayilar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

print(sayilar[1:11:2])
Çıktı
[1, 3, 5, 7, 9]

sayilar[1:11:2] yapımız, 1 ve 11 (hariç) arasındaki değerleri yazdırır, stride değeri 2 ise yalnızca her iki öğeden birini yazdırır.

İlk iki parametreyi atlayıp yalnızca stride parametresini kullanarak şu şekilde bir list[::z] yazdırabiliriz:

print(sayilar[::3])
Çıktı
[0, 3, 6, 9, 12]

Listeyi stride 3 olarak ayarladığımızda, yalnızca her üçüncü öğe yazdırılır:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

Pozitif ve negatif indeks numaraları ile dilimleme ve stride belirleme, listeler üzerinde çalışmamız ve istediğimiz çıktıyı elde etmemiz için bize kontrol sağlar.


Listeleri Operatörlerle Değiştirme

Operatörler, listelerde değişiklik yapmak için kullanılabilir. + ve * operatörleri ve bunların bileşik formları olan += ve *= operatörlerini inceleyeceğiz.

+ operatörü, iki veya daha fazla listeyi birleştirmek için kullanılabilir:

sea_creatures = ['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']
oceans = ['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']

print(sea_creatures + oceans)
Çıktı:
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']

+ operatörü birleştirme yapabildiği için, bir listeye başka bir liste biçiminde öğeler eklemek için kullanılabilir. Öğeyi köşeli parantez içine almayı unutmayın:

sea_creatures = sea_creatures + ['yeti crab']
print(sea_creatures)
Çıktı:
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

* operatörü, listeleri çoğaltmak için kullanılabilir. Örneğin, deniz canlıları listesini 2, okyanuslar listesini ise 3 kez çoğaltalım:

print(sea_creatures * 2)
print(oceans * 3)
Çıktı:
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']

* operatörü sayesinde listeleri belirttiğimiz sayıda çoğaltabiliriz.

+ ve * operatörlerinin bileşik formları olan += ve *= operatörleri, listeleri hızlı ve otomatik bir şekilde doldurmak için kullanılabilir. Bu operatörler, örneğin kullanıcı girdisi ile daha sonra değiştirilebilecek yer tutucularla listeleri doldurmak için kullanılabilir.

Deniz canlıları listesine bir yer tutucu öğesi ekleyelim ve bu öğeyi birkaç kez eklemek için += operatörünü bir for döngüsü ile kullanalım:

for x in range(1, 4):
    sea_creatures += ['fish']
    print(sea_creatures)
Çıktı:
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish', 'fish']

For döngüsünün her yinelemesinde, sea_creatures listesine bir 'fish' öğesi eklenir.

*= operatörü de benzer şekilde çalışır:

sharks = ['shark']

for x in range(1, 4):
    sharks *= 2
    print(sharks)
Çıktı:
['shark', 'shark']
['shark', 'shark', 'shark', 'shark']
['shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

+ ve * operatörleri listeleri birleştirmek ve çoğaltmak için kullanılabilir. += ve *= bileşik operatörleri de listeleri birleştirip çoğaltarak orijinal listeye yeni kimliği aktarabilir.


Listeden Bir Öğeyi Kaldırma

Listelerdeki öğeler, del ifadesi kullanılarak kaldırılabilir. Bu, belirttiğiniz indeks numarasındaki değeri listeden siler.

Deniz canlıları listesinden 'octopus' öğesini kaldırmak istersek, bu öğe indeks 1'de bulunuyor. Bu öğeyi kaldırmak için del ifadesini ve ardından liste değişkenini ve o öğenin indeks numarasını kullanacağız:

sea_creatures = ['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

del sea_creatures[1]
print(sea_creatures)
Çıktı:
['shark', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

Artık 1 indeks pozisyonundaki öğe, yani 'ahtapot' dizisi, artık deniz canlıları listemizde değil.

Ayrıca, del ifadesi ile bir aralık da belirleyebiliriz. Örneğin, sadece 'octopus' değil, aynı zamanda 'blobfish' ve 'mantis shrimp' öğelerini de kaldırmak istersek, deniz canlıları listesindeki bir aralığı del ifadesi ile belirleyerek bunu gerçekleştirebiliriz:

sea_creatures = ['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']

del sea_creatures[1:4]
print(sea_creatures)

Çıktı:

['shark', 'anemone', 'yeti crab']

del ifadesi ile bir aralık kullanarak, 1 indeks (dahil) ile 4 indeks (hariç) arasındaki öğeleri kaldırarak geriye 3 öğeli bir liste bıraktık.

del ifadesi, listelerdeki belirli öğeleri kaldırmamıza olanak tanır.


Liste Öğeleriyle Liste Oluşturma

Listeler, liste öğelerinden oluşan listelerle tanımlanabilir ve her bir köşeli parantez içine alınmış liste, ana listenin köşeli parantezleri içinde yer alır:

sea_names = [['shark', 'octopus', 'squid', 'mantis shrimp'], ['Sammy', 'Jesse', 'Drew', 'Jamie']]

Bu iç içe geçmiş listelere "iç içe listeler" denir.

Bu listede bir öğeye erişmek için birden fazla indeks kullanmamız gerekir:

print(sea_names[1][0])
print(sea_names[0][0])
Çıktı:
Sammy
shark

İlk liste, bir öğeye eşit olduğu için 0 indeks numarasına sahip olacak ve ikinci liste ise 1 indeks numarasına sahip olacaktır. Her bir iç içe liste içinde ayrı indeks numaraları olacaktır ve bu iç indeks numarasını ikinci indeks numarasıyla çağıracağız:

sea_names[0][0] = 'shark'
sea_names[0][1] = 'octopus'
sea_names[0][2] = 'squid'
sea_names[0][3] = 'mantis shrimp'

sea_names[1][0] = 'Sammy'
sea_names[1][1] = 'Jesse'
sea_names[1][2] = 'Drew'
sea_names[1][3] = 'Jamie'

İç içe geçmiş listelerle çalışırken, ilgili iç içe listenin içindeki belirli öğelere erişmek için birden fazla indeks numarasına başvurmanız gerektiğini unutmamak önemlidir.


Sonuç

Liste veri türü, programınız boyunca değiştirilebilen esnek bir veri türüdür. Bu eğitim, listelerin temel özelliklerini, indeksleme, dilimleme, değiştirme ve listeleri birleştirme işlemlerini kapsadı.


Lisa Tagliaferri tarafından yazılanUnderstanding Lists in Python 3 a Programming makalesinin düzenlenmiş çevirisi


Daha Fazla Oku:


Bu Makaleyi Paylaş

Yorumlar

yorum Yap