Ana içeriğe atla

Python Demetler (Tuples) Eğitimi

Python demetleri hakkında bilgi edinin: nedir, nasıl oluşturulur, ne zaman kullanılır, hangi işlemler yapılır ve bilmeniz gereken çeşitli fonksiyonlar.
Güncel 3 Eki 2026  · 10 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Python listelerine benzer şekilde, demetler (tuples) bir dizi halinde değer saklamanıza izin veren bir başka standart veri tipidir. Verileri biriyle paylaşmak, ancak onların bu verileri değiştirmesine izin vermemek istediğiniz durumlarda faydalı olabilirler. Verileri kullanabilirler, ancak paylaşılan orijinal veride herhangi bir değişiklik yansımaz.

Bu eğitimde Python demetlerini ayrıntılı olarak göreceksiniz:

python tuple eğitimi

DataCamp'in Veri Bilimi için Veri Tipleri kursuna göz atmayı unutmayın; burada listeler, sözlükler, kümeler ve daha birçok veri yapısı hakkındaki bilginizi pekiştirip uygulayabilirsiniz! Alternatif olarak, Python'un kullandığı farklı veri yapıları hakkında daha fazla bilgi edinmek için bu Python Veri Yapıları Eğitimini de inceleyin.

Python Demeti (Tuple)

Yukarıda okuduğunuz gibi, bu Python veri yapısını, değiştirilemez (immutable) ve sıralı bir öğe dizisini saklamak için kullanabilirsiniz.

Demetler, listelerde olduğu gibi [] yerine () parantezleriyle başlatılır. Bu, bir demet oluşturmak için yalnızca aşağıdakini yapmanız gerektiği anlamına gelir:

cake = ('c','a','k','e')
print(type(cake))
<class 'tuple'>

Unutmayın ki type(), kendisine geçirilen parametrenin veri tipini kontrol etmenize olanak tanıyan yerleşik bir fonksiyondur.

Demetler hem homojen hem de heterojen değerleri tutabilir. Ancak, bu değerleri bir kez tanımladıktan sonra onları değiştiremeyeceğinizi unutmayın:

mixed_type = ('C',0,0,'K','I','E')

for i in mixed_type:
    print(i,":",type(i))
C : <class 'str'>
0 : <class 'int'>
0 : <class 'int'>
K : <class 'str'>
I : <class 'str'>
E : <class 'str'>
# 0'ı 'O' ile değiştirmeyi deneyin
mixed_type[1] = 'O'
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-16-dec29c289a95> in <module>()
----> 1 mixed_type[1] = 'O' # Trying to change 0 to 'O'


TypeError: 'tuple' object does not support item assignment

Bu son hata iletisini alırsınız çünkü bir demetin içindeki değerleri değiştiremezsiniz.

Bir demet oluşturmanın bir başka yolu da şudur:

numbers_tuple = 1,2,3,4,5
print(type(numbers_tuple))
<class 'tuple'>

Demetler ve Listeler

Dikkat etmiş olabileceğiniz gibi, demetler listelere oldukça benzer. Aslında, demetlerin değiştirilemez listeler olduğunu söyleyebilirsiniz; bu da bir demet oluşturulduktan sonra içindeki öğelerin değerlerini silemeyeceğiniz veya değiştiremeyeceğiniz anlamına gelir. Yeni değerler de ekleyemezsiniz. Şuna bakın:

numbers_tuple = (1,2,3,4,5)
numbers_list = [1,2,3,4,5]

# Demete bir sayı ekleyin
numbers_tuple.append(6)
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-26-e47776d745ce> in <module>()
      3 
      4 # Append a number to the tuple
----> 5 numbers_tuple.append(6)


AttributeError: 'tuple' object has no attribute 'append'

Bu, bir demetten öğe silemeyeceğiniz veya demete ekleme yapamayacağınız, ancak bir listeyle bunu yapabileceğiniz için hata verir.

# Listeye sayılar ekleyin
numbers_list.append(6)
numbers_list.append(7)
numbers_list.append(8)

# Listeden bir sayı kaldırın
numbers_list.remove(7)
print(numbers_list)
[1, 2, 3, 4, 5, 6, 8]

Peki değiştirilemiyorlarsa neden demetleri kullanasınız?

Yalnızca verilere "salt okunur" erişim sağlamakla kalmazlar, aynı zamanda listelerden daha hızlıdırlar. Aşağıdaki kod parçalarını düşünün:

import timeit
timeit.timeit('x=(1,2,3,4,5,6,7,8,9)', number=100000)
0.0018976779974764213
timeit.timeit('x=[1,2,3,4,5,6,7,8,9]', number=100000)
0.019868606992531568

Değiştirilemezlik demetler açısından gerçekten ne anlama gelir?

Resmi Python belgelerine göre immutable, 'sabit değere sahip bir nesnedir', ancak 'değer' oldukça muğlak bir terimdir; demetler için doğru terim 'id' olacaktır. 'id', bir nesnenin bellekteki konumunun kimliğidir.

Biraz daha derine inelim:

# Öğelerinden biri liste olan 'n_tuple' demeti.
n_tuple = (1, 1, [3,4])

#Aynı değere sahip öğelerin id'si aynıdır.
id(n_tuple[0]) == id(n_tuple[1])
True
#Farklı değere sahip öğelerin id'si farklıdır.
id(n_tuple[0]) == id(n_tuple[2])
False
id(n_tuple[0])
4297148528
id(n_tuple[2])
4359711048
n_tuple.append(5)
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-40-3cd258e024ff> in <module>()
----> 1 n_tuple.append(5)


AttributeError: 'tuple' object has no attribute 'append'

Bir demete öğe ekleyemeyiz; bu nedenle yukarıda bir hata alırsınız. Bu yüzden demetler değiştirilemez olarak adlandırılır. Ancak, her zaman şunu yapabilirsiniz:

n_tuple[2].append(5)
n_tuple
(1, 1, [3, 4, 5])

Bu da, aslında orijinal demeti değiştirmenizi sağlar. Peki demet nasıl hâlâ değiştirilemez sayılıyor?

Bunun nedeni, demetin içindeki listenin id'si, siz ona 5 eklemiş olsanız bile aynı kalır.

id(n_tuple[2])
4359711048

Şimdiye kadar öğrendiklerinizi özetlemek gerekirse:

Bazı demetler (yalnızca değiştirilemez nesneler: stringler vb. içeriyorsa) değiştirilemezdir ve bazı demetler (bir veya daha fazla değiştirilebilir nesne: listeler vb. içeriyorsa) değiştirilebilir olabilir. Ancak bu, Python kullanıcıları arasında sıkça tartışılan bir konudur ve bunu tamamen anlamak için daha fazla arka plan bilgisine ihtiyaç duyarsınız. Aynı konuya ilişkin daha derinlemesine bir makale için buraya bakın. Şimdilik, genel olarak demetlerin değiştirilemez olduğunu söyleyelim.

  • Değiştirilemez özellikleri nedeniyle bir demete öğe ekleyemezsiniz. Demetlerde append() veya extend() yöntemi yoktur,
  • Aynı nedenle bir demetten öğe kaldıramazsınız. Demetlerin remove() veya pop() yöntemi yoktur,
  • Bir demette öğe arayabilirsiniz çünkü bu, demeti değiştirmez.
  • Ayrıca bir öğenin demette olup olmadığını kontrol etmek için in operatörünü kullanabilirsiniz.

Bu nedenle, sabit bir değer kümesi tanımlıyor ve bununla yapacağınız tek şey üzerinde yineleme yapmaksa, liste yerine demet kullanın. Listelerle çalışmaktan daha hızlı ve ayrıca daha güvenlidir, çünkü demetler "yazma korumalı" veriler içerir.

Python listeleri hakkında daha fazla bilgi edinmek istiyorsanız, mutlaka bu eğitime göz atın!

Yaygın Demet İşlemleri

Python size demetleri işlemek için çeşitli yollar sunar. Önemli olanlardan bazılarına örneklerle bakalım.

Demet Dilimleme

Bir demetteki ilk değer 0 ile indekslenir. Python listelerinde olduğu gibi, demetteki öğelere erişmek için köşeli parantezleri [] indeks değerleriyle birlikte kullanabilirsiniz:

numbers = (0,1,2,3,4,5)
numbers[0]
0

Demetlerle negatif indekslemeyi de kullanabilirsiniz:

numbers[-1]
5

İndeksleme tekil öğeleri elde etmek için kullanılırken, dilimleme bir alt küme elde etmenizi sağlar. Çıkarmak istediğiniz bir aralık girdiğinizde buna aralık dilimleme denir. Aralık dilimlemenin genel formatı şöyledir:

[Start index (included):Stop index (excluded):Increment]

Burada Increment isteğe bağlı bir parametredir ve varsayılan artış 1'dir.

# 4 indeksindeki öğe hariçtir
numbers[1:4]
(1, 2, 3)
# Bu, demetteki tüm öğeleri verir
numbers[:]
(0, 1, 2, 3, 4, 5)
# Increment = 2
numbers[::2]
(0, 2, 4)

İpucu: Demeti tersine çevirmek için negatif artış değerini de kullanabilirsiniz.

numbers[::-1]
(5, 4, 3, 2, 1, 0)

Demet Toplama

Demetleri birleştirerek yeni bir demet oluşturabilirsiniz. Toplama işlemi demetlerde basitçe bir birleştirme (concatenation) yapar.

x = (1,2,3,4)
y = (5,6,7,8)

# İki demeti birleştirerek yeni bir demet oluşturma
z = x + y 

print(z)
(1, 2, 3, 4, 5, 6, 7, 8)
y = [5,6,7,8]
z = x + y
print(z)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-55-d352c6414a4c> in <module>()
      1 y = [5,6,7,8]
----> 2 z = x + y
      3 print(z)


TypeError: can only concatenate tuple (not "list") to tuple

Yalnızca aynı veri tiplerini ekleyebilir veya birleştirebilirsiniz. Bu nedenle bir demet ile bir listeyi birleştirmek hata verir.

Demet Çarpma

Çarpma işlemi demetin tekrar edilmesine yol açar.

x = (1,2,3,4)
z = x*2
print(z)
(1, 2, 3, 4, 1, 2, 3, 4)

Demet Fonksiyonları

Python listelerinin aksine, demetlerde değiştirilemez doğaları nedeniyle append(), remove(), extend(), insert() ve pop() gibi yöntemler yoktur. Ancak, demetlerle çalışmak için birçok başka yerleşik yöntem vardır:

count() ve len()

count(), bir demetteki bir öğenin kaç kez geçtiğini döndürür.

a = [1,2,3,4,5,5]
a.count(5)
2

len() fonksiyonu ile demetin uzunluğunu döndürebilirsiniz:

a = (1,2,3,4,5)
print(len(a))
5

any()

any() fonksiyonunu, bir demetin herhangi bir öğesinin yinelenebilir (iterable) olup olmadığını keşfetmek için kullanabilirsiniz. Bu durumda True döner; aksi halde False döner.

a = (1,)
print(any(a))
True

Yukarıda a demetinin bildirimindeki , işaretine dikkat edin. Bir demette tek bir öğe başlatırken virgül belirtmezseniz, Python fazladan bir parantezi yanlışlıkla eklediğinizi varsayar (bu zararsızdır), ancak veri tipi demet olmaz. Bu nedenle, bir demette tek bir öğe bildirirken bir virgül eklemeyi unutmayın.

Şimdi tekrar any() fonksiyonuna dönelim: Boole bağlamında, bir öğenin değeri önemsizdir. Boş bir demet false, en az bir öğe içeren herhangi bir demet true kabul edilir.

b = ()
print(any(b))
False

Programınızın bir yerinde bir demeti çağırırken, demetin dolu olduğundan emin olmak istediğinizde bu fonksiyon faydalı olabilir.

tuple()

tuple() kullanarak bir veri tipini demete dönüştürün. Örneğin, aşağıdaki kod bloğunda bir Python listesini demete dönüştürürsünüz.

a_list = [1,2,3,4,5]
b_tuple = tuple(a_list)
print(type(b_tuple))
<class 'tuple'>

min() ve max()

max() demetteki en büyük öğeyi döndürürken, min() demetin en küçük öğesini döndürmek için kullanılabilir. Aşağıdaki örneği düşünün:

print(max(a))
print(min(a))
5
A

Bunu string veri tipi içeren demetlerle de kullanabilirsiniz.

# 'Apple' stringi otomatik olarak karakterlerin bir dizisine dönüştürülür. 
a = ('Apple') 
print(max(a))
p

sum()

Bu fonksiyonla, bir demetteki öğelerin toplamını döndürürsünüz. Yalnızca sayısal değerlerle kullanılabilir.

sum(a)
28

sorted()

Öğeleri sıralı bir düzende döndüren bir yapı elde etmek için sorted() kullanın; örneğin aşağıdaki gibi:

a = (6,7,4,2,1,5,3)
sorted(a)
[1, 2, 3, 4, 5, 6, 7]

Döndürülen tipin bir demet değil, bir liste olduğunu not etmek gerekir. Orijinal 'a' demetindeki sıralama değişmez ve 'a'nın veri tipi demet olarak kalır.

Bonus: Birden Çok Değer Atama

Demetlerle yapabileceğiniz hoş bir şey de, aynı anda birden çok değer atamak için onları kullanmaktır. Şuna bakın:

a = (1,2,3)
(one,two,three) = a
print(one)
1

a, üç öğeden oluşan bir demettir ve (one,two,three) üç değişkenden oluşan bir demettir. (one,two,three) ifadesini a demetine atamak, a'nın her bir değerini sırasıyla one, two ve three değişkenlerine atar. Bu, bir demette saklanan bir diziye bir dizi değeri atamanız gerektiğinde kullanışlı olabilir.

Tebrikler!

Bu demet eğitimini sonuna kadar tamamladınız! Bu süreçte Python demetlerinin ne olduğunu, onları nasıl başlatabileceğinizi, onları işlemek için yapabileceğiniz en yaygın işlemleri ve bu Python veri yapılarından daha fazla içgörü elde etmek için en yaygın yöntemlerin neler olduğunu öğrendiniz. Bonus olarak, demetlere aynı anda birden çok değer atayabileceğinizi de keşfettiniz.

Konular
Python

Python Kursları

Kurs

Python’a Giriş

4 sa
7.1M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör