Demetler listelere benzer. Ama listeler ile aralarında çok temel bir fark vardır. Listeler üzerinde oynamalar yapabiliriz. Yani öğe ekleyebilir, öğe çıkarabiliriz. Demetlerde ise böyle bir şey yoktur.
Demeti şu şekilde tanımlıyoruz:
Gördüğünüz gibi, yaptığımız bu iş değişken tanımlamaya çok benziyor. İstersek demetin öğelerini parantez içinde de gösterebiliriz:
Parantezli de olsa parantezsiz de olsa yukarıda tanımladıklarımızın ikisi de demet sınıfına giriyor. İsterseniz bu durumu teyit edelim:
Peki boş bir demet nasıl oluşturulur? Çok basit:
Peki tek öğeli bir demet nasıl oluşturulur? O kadar basit değil. Aslında basit ama biraz tuhaf:
Gördüğünüz gibi, tek öğeli bir demet oluşturabilmek için öğenin yanına bir virgül koyuyoruz! Hemen teyit edelim:
O virgülü koymazsak ne olur?
demet2nin tipini kontrol edelim:
Demek ki, virgülü koymazsak demet değil, alelade bir karakter dizisi oluşturmuş oluyoruz.
Yukarıda anlattığımız şekilde bir demet oluşturma işine demetleme (packing) adı veriliyor. Bunun tersini de yapabiliriz. Buna da demet çözme deniyor (unpacking).
Önce demetleyelim:
Şimdi demeti çözelim:
Bu şekilde komut satırına a yazarsak, Anne öğesi; b yazarsak Baba öğesi; c yazarsak Kardesler öğesi ekrana yazdırılacaktır. Demet çözme işleminde dikkat etmemiz gereken nokta, eşittir işaretinin sol tarafında demetteki öğe sayısı kadar değişken adı belirlememiz gerektiğidir.
Peki, listeler varken bu demetler ne işe yarar? diye sorduğunuzu duyar gibiyim.
Bir defa, demetler listelerin aksine değişiklik yapmaya müsait olmadıklarından listelere göre daha güvenlidirler. Yani yanlışlıkla değiştirmek istemediğiniz veriler içeren bir liste hazırlamak istiyorsanız demetleri kullanabilirsiniz. Ayrıca demetler listelere göre daha hızlı çalışır. Dolayısıyla bir program içinde sonradan değiştirmeniz gerekmeyecek verileri gruplamak için liste yerine demet kullanmak daha mantıklıdır.
Demeti şu şekilde tanımlıyoruz:
Kod:
>>> demet = "Ali", "Veli", 49, 50
Gördüğünüz gibi, yaptığımız bu iş değişken tanımlamaya çok benziyor. İstersek demetin öğelerini parantez içinde de gösterebiliriz:
Kod:
>>> demet2 = ("Ali", "Veli", 49, 50)
Parantezli de olsa parantezsiz de olsa yukarıda tanımladıklarımızın ikisi de demet sınıfına giriyor. İsterseniz bu durumu teyit edelim:
Kod:
>>> type(demet) <type 'tuple'> >>> type(demet2) <type 'tuple'>
Peki boş bir demet nasıl oluşturulur? Çok basit:
Kod:
>>> demet = ()
Peki tek öğeli bir demet nasıl oluşturulur? O kadar basit değil. Aslında basit ama biraz tuhaf:
Kod:
>>> demet = ("su",)
Gördüğünüz gibi, tek öğeli bir demet oluşturabilmek için öğenin yanına bir virgül koyuyoruz! Hemen teyit edelim:
Kod:
>>> type(demet) <type 'tuple'>
O virgülü koymazsak ne olur?
Kod:
>>> demet2 = ("su")
demet2nin tipini kontrol edelim:
Kod:
>>> type(demet2) <type 'str'>
Demek ki, virgülü koymazsak demet değil, alelade bir karakter dizisi oluşturmuş oluyoruz.
Yukarıda anlattığımız şekilde bir demet oluşturma işine demetleme (packing) adı veriliyor. Bunun tersini de yapabiliriz. Buna da demet çözme deniyor (unpacking).
Önce demetleyelim:
Kod:
>>> aile = "Anne", "Baba", "Kardesler"
Şimdi demeti çözelim:
Kod:
>>> a, b, c = aile
Bu şekilde komut satırına a yazarsak, Anne öğesi; b yazarsak Baba öğesi; c yazarsak Kardesler öğesi ekrana yazdırılacaktır. Demet çözme işleminde dikkat etmemiz gereken nokta, eşittir işaretinin sol tarafında demetteki öğe sayısı kadar değişken adı belirlememiz gerektiğidir.
Peki, listeler varken bu demetler ne işe yarar? diye sorduğunuzu duyar gibiyim.
Bir defa, demetler listelerin aksine değişiklik yapmaya müsait olmadıklarından listelere göre daha güvenlidirler. Yani yanlışlıkla değiştirmek istemediğiniz veriler içeren bir liste hazırlamak istiyorsanız demetleri kullanabilirsiniz. Ayrıca demetler listelere göre daha hızlı çalışır. Dolayısıyla bir program içinde sonradan değiştirmeniz gerekmeyecek verileri gruplamak için liste yerine demet kullanmak daha mantıklıdır.
