# Python Demetler

Python demetler (tuples) konusunu işliyoruz.

Python koleksiyonlar (diziler) altında yer alan demet (tuple) veri tipimiz sıralanabilen , indekslenebilen, çoğul elemana izin veren ama değiştirilemeyen bir veri tipidir. Yuvarlak parantezlerle ( ) oluşturulur.

demet = ()

Parantezlere oluşturulan demetler, en başta elemanlarla birlikte de oluşturulabilirler.

demet = ("elma","armut","çilek")

Aynı zamanda bir liste tuple() fonksiyonu ile de oluşturulabilir ve constructor yöntemiyle başlangıçta elemanları ayarlanabilir.

demet = tuple()
demet = tuple(("Ankara","İstanbul","Kayseri"))

Eğer tek elemanlı bir demet oluşturmak istiyorsanız ilk elemandan sonra , (virgül) işareti koymalısınız. Aksi takdirde veri tipiniz str olur.

Tuple
String
Tuple
demet = ('a',)
print(type(demet)) # <class 'tuple'>
String
demet = ('a')
print(type(demet)) # <class 'str'>

Oluşturduğumuz demet değişkenlerinin tipini kontrol edelim.

print(type(demet)) # <class 'tuple'>

1. Demet Elemanlarına Erişim

Python programlama dilinde elinizdeki bir demetin elemanlarına ulaşabilmek için indeksleri kullanmalısınız. Aşağıdaki örnekle indeksleri nasıl kullanacağınızı gösterelim.

demet = ("Ceviz","Fındık","Fıstık","Leblebi")
print(demet[0]) # Ceviz
print(demet[1]) # Fındık
print(demet[2]) # Fıstık
print(demet[3]) # Leblebi

İndeks her zaman 0 dan başlar. Yani bir demette ilk elemanın indeksi 0 dır.

2. Negatif İndeksleme

Negatif indeks kullanarak bir demeti tersten başlayarak ele alabilirsiniz. Örnek üzerinde görelim hemen.

demet = ("Ceviz","Fındık","Fıstık","Leblebi")
print(demet[-1]) # Leblebi
print(demet[-2]) # Fıstık
print(demet[-3]) # Fındık
print(demet[-4]) # Ceviz

3. Bir Demetten Yeni Demet Oluşturma (İndeks)

Elimizde mevcut olan bir demetten indeks belirterek yeni bir demet oluşturabiliriz. Örneğin mevcut demetin 2.indeksinden 5.indeksine kadar ( 5 dahil değil ) olan elemanlarla yeni bir demet oluşturalım.

demet = ("a","b","c","d","e","f","g")
yenidemet = demet[2:5]
print(yenidemet) #("c","d","e")

Bu şekilde yeni demet oluştururken [x:y] ifadesinde x dahil, y dahil değildir. Ayrıca indeksin 0 dan başladığını unutmayınız!

4. Bir Demetten Yeni Demet Oluşturma (Negatif İndeks)

Elimizdeki demetten yeni bir demet oluştururken negatif indeksleri de kullanabiliriz.

demet = ("a","b","c","d","e","f","g")
yenidemet = demet[-3:-1]
print(yenidemet) #("e","f")

Bu şekilde yeni demet oluştururken [-x:-y] ifadesinde -x dahil, -y dahil değildir. Ayrıca negatif indeksin -1 den başladığını unutmayınız!

5. Demet Elemanlarını Sıralayarak Ekrana Yazdırma

Yeri geldiğinde demet elemanlarınızı ekrana sırasıyla yazdırmak, elemanlar üzerinde sırasıyla işlem yapmak isteyebilirsiniz. Bunun için for döngümüzü kullanacağız.

demet = ("a","b","c","d")
for x in demet: print(x)

Bu şekilde demetin tüm elemanları x değeri üzerinden otomatik olarak listelenecek ve dizi elemanı bittiğinde döngü duracaktır.

6. Demet Eleman Sayısını Öğrenme

Elinizde olan bir demetin eleman sayısını öğrenmek için len() fonksiyonunu kullanacağız.

demet = ("a","b","c","d")
print(len(demet)) #4

Eğer özellikle bir elemanın destede kaç adet bulunduğunu öğrenmek isterseniz de count() fonksiyonunu kullanmanız gerekiyor.

demet = ("a","b","c","c","d","c")
sayac = demet.count("c")
print(sayac) #3

7. Demet Elemanının Değerini Değiştirme

Bu başlığı görünce şaşırmış olabilirsiniz çünkü konunun en başında demet elemanlarının değiştirilemeyeceğini söylemiştik. Bir demet oluşturduğunuzda elemanlarına artık indekslerle ulaşarak değiştiremezsiniz .

meyveler = ("kivi","çilek","muz","karpuz")
meyveler[3] = "armut" # !!! HATA VAR !!!

Gördüğünüz gibi demetin bir elemanını değiştirmeye çalıştığınızda hata alacaksınızdır. Fakat elinizdeki demetin bir elemanını gerçekten değiştirmeye ihtiyaç duyduğunuzda aşağıdaki gibi dolaylı bir yöntem izleyebilirsiniz.

x = ("kivi","çilek","muz","karpuz")
y = list(x)
y[1] = "avakado"
x = tuple(y)
print(x) # ("kivi","çilek","muz","karpuz")

Örnekteki gibi elimizde olan bir demeti önce listeye çevirerek elemanlarını indekslerle değiştirebilir hale getirdik. Ardından değiştirme işlemini yaptıktan sonra listemizi tekrar demete çeviriyoruz ve dolaylı yoldan demetimizi düzenlemiş oluyoruz.

8. Demete Yeni Eleman Ekleme

Bir demete yeni bir eleman ekleyemezsiniz. Bunun yerine yukarıdaki örnekte olduğu gibi önce listeye çevirip ekleme işlemini yaptıktan sonra tekrar demete çevirebilirsiniz.

9. Listeden Bir Eleman Çıkarma

Bir demetten eleman çıkaramazsınız. Bunun yerine yukarıdaki örnekte olduğu gibi önce listeye çevirip çıkarma işlemini yaptıktan sonra tekrar demete çevirebilirsiniz.

10. Demet Kopyalamak ve Çoğaltmak

Elimizde olan bir demeti kopyalayarak çoğaltmak için kopyalanacak demeti belirterek yeni bir demet oluşturabiliriz.

demet = ("a","b","c","d")
yenidemet = tuple(demet)
print(yenidemet) # ("a","b","c","d")

11. İki Farklı Demeti Birleştirmek

Birbirinden farklı veya aynı iki demeti birleştirmek için + operatörünü kullanabiliriz.

demet1 = ("A","B","C")
demet2 = ("D","E")
demet3 = demet1 + demet2
print(demet3) # ("A","B","C","D","E")

12. Bir Elemanın İndeksini Bulmak

Elimizdeki demetin bir elemanının demetteki indeksini bulmak için index() fonksiyonunu kullanabilirsiniz.

demet = (14,36,2,95,43,0,66)
print(demet.index(95)) # 3

13. Bir Elemanın Varlığını Kontrol Etme

Demette bir elemanın var olup olmadığını kontrol etmek için in terimini kullanabiliriz.

demet = ("A","B","C","D","E")
if "C" in demet:
print("Evet var!")
else:
print("Hayır yok!")
# Evet var!