Bu makalede, Liste ve Tuples arasındaki temel farkları ve bu iki veri yapısının nasıl kullanılacağını öğreneceğiz.
Listeler ve Tuples, bir veya daha fazla nesneyi veya değeri belirli bir sırayla saklar. Bir listede veya tuple'da saklanan nesneler, Yok Anahtar Sözcüğü tarafından tanımlanan hiçbir şey türü dahil herhangi bir türde olabilir.
Listeler ve Tuple'lar çoğu bağlamda benzerdir, ancak bu makalede bulacağımız bazı farklılıklar vardır.
Sözdizimi Farklılıkları
Liste ve tuple sözdizimi biraz farklıdır. Listeler köşeli parantezlerle ()
, Başlıklar ise parantezle çevrilidir ()
.
Örnek 1.1: Liste Oluşturma ve Demet Oluşturma
list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)
Çıktı:
(1,2,3,4) (1,2,3,4)
Yukarıda, biz gelen numaralarının listesini tutmak değişken denilen list_num tanımlanan 1
için 4
parantez ile çevrilidir .bu liste ()
. Ayrıca tup_num değişkenini tanımladık; olan sayısının bir başlığın içerir 1
için 4
. Tuple, parantez ile çevrilidir ()
.
Python'da type()
oluşturulan nesnenin türünü veren fonksiyonumuz var .
Örnek 1.2: type () işlevini kullanarak veri yapısı türünü bulun
type(list_num) type(tup_num)
Çıktı:
listesi listesi
Değişken Liste ve Değiştirilemez Tuples
Listenin değişken bir yapısı vardır, yani liste yaratıldıktan sonra ihtiyaçlara göre değiştirilebilir veya değiştirilebilir, oysa tuple değişmez bir yapıya sahiptir, yani tuple oluşturulduktan sonra değiştirilemez veya değiştirilemez.
Örnek 2.1: Bir Öğe Listesini Tuple'a Karşı Değiştirme
list_num(2) = 5 print(list_num) tup_num(2) = 5
Çıktı:
(1,2,5,4) Geri izleme (en son çağrı): Dosya "python", satır 6, TypeError'da: 'tuple' nesnesi öğe atamasını desteklemiyor
Yukarıdaki kodda atanan 5
dizinde list_num için 2
ve bulduğumuz 5
endeksinde 2
çıkışında. Ayrıca 5
indekste tup_num'a atadık 2
ve elde ettik type error
. Değişmez doğası nedeniyle tuple'ı değiştiremeyiz.
Not: Demet değişmez olduğundan, bunlar boyut olarak sabittir ve liste boyut olarak değişkendir.
Mevcut İşlemler
Listelerin tuple'dan daha fazla yerleşik işlevi vardır. dir((object))
Liste ve tuple için tüm ilişkili işlevleri elde etmek için dahili işlevi kullanabiliriz .
Örnek 3.1: Liste Dizini
dir(list_num)
Çıktı:
('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', ' __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', ' kopyala ',' say ',' genişlet ',' dizin ','ekle ',' pop ',' kaldır ',' ters çevir ',' sırala ')
Örnek 3.2: Tuple Dizini
dir(tup_num)
Çıktı:
('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', ' __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce__ ',' __reduce_ex__ ' , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')
Açıkça görebiliyoruz ki, bir tuple üzerindeki bir listeyle ilişkili pek çok ek işlevsellik var. Tuple'da bulunmayan dahili işlevlerle listedeki öğeleri ekleme ve açma, kaldırma ve sıralama işlemleri yapabiliriz.
Boyut Karşılaştırması
Tuples işlemi, listeden daha küçük boyuta sahiptir, bu da onu biraz daha hızlı yapar, ancak çok sayıda öğeye sahip olana kadar bahsedecek kadar fazla değildir.
Örnek 5.1: Liste ve Tuple boyutunun hesaplanması
a= (1,2,3,4,5,6,7,8,9,0) b= (1,2,3,4,5,6,7,8,9,0) print('a=',a.__sizeof__()) print('b=',b.__sizeof__())
Çıktı:
a = 104 b = 120
Yukarıdaki kodda, aynı öğelere sahip tuple a ve liste b var, ancak tuple boyutu listeden daha küçük.
Farklı Kullanım Durumları
İlk bakışta, listelerin her zaman tuple'ların yerini alabileceği görünebilir. Ancak demetler son derece yararlı veri yapılarıdır
- Liste yerine demet kullanmak, programcıya ve yorumlayıcıya verilerin değiştirilmemesi gerektiğine dair bir ipucu verebilir.
- Tuple'lar genellikle verileri depolamak için anahtarsız bir sözlüğün eşdeğeri olarak kullanılır. Örneğin,
(('Kılıç Balığı', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taksi Şoförü', 'Martin Scorsese', 1976))
Yukarıdaki örnek, bir film listesi içeren listenin içinde tuple içerir. - Kayıtlar bir liste içinde saklandığında verileri okumak daha kolaydır. Örneğin,
((2,4), (5,7), (3,8), (5,9))
okumaktan daha kolay((2,4), (5,7), (3,8), (5,9))
Tuple, hashable ve immutable doğası nedeniyle sözlükte anahtar olarak da kullanılabilir, oysa Listeler bir sözlükte anahtar olarak kullanılmaz çünkü liste işleyemez __hash__()
ve değiştirilebilir doğaya sahip değildir .
key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid
Hatırlanması gereken önemli noktalar:
- Tuple'ların değişmez sözdizimi parantezlerle gösterilirken
()
, listelerin değişmez sözdizimi köşeli parantezlerle gösterilir()
. - Listelerin uzunluğu değişken, tuple sabit uzunluktadır.
- List değişken bir yapıya sahiptir, tuple değişmez bir yapıya sahiptir.
- List, tuple'dan daha fazla işlevselliğe sahiptir.