Sequence types və mutability haqqında, for ilə içində iterate edə bildiyimiz hər bir data tipi sequental data type sayılır. Məsələn listlər. Listlər həm də mutable data type-dır. Yəni proqram işlədiyi müddətdə içi dəyişə bilər. Tuple-lar adətən o zaman istifadə olunurlar ki, hər hansı bir listiniz və s. var onu proqram içində dəyişməsini istəmirsiz. Onu tuple() vasitəsilə tuple-a çevirirsiniz.
For ilə içində iterate edə bildiyimiz hər bir data tipi sequental data type sayılır. Məsələn, listlər. Listlər eyni zamanda mutable data type-dır. Yəni proqram işlədiyi müddətdə içi dəyişə bilər.
Proqram işlədiyi müddətdə içi dəyişə bilməyən tiplər də mövcuddur. Onlara immutable tiplər deyilir. Məsələn, tuple. Tuple-ı pythonda iki cür tanıda bilərik:
Tuple-ın hər bir elementi başqa data tipinə aid ola bilər.
Tuple-ları tanımladarkən mütləq vergül işarəsindən istifadə etmək lazımdır. Tək elementi olan tuple-lar aşağıdakı formada təyin olunurlar. Nümunədən də göründüyü kimi 2-ci sətirdə vergül istifadə etmədiyim üçün 5-ci sətrin nəticəsi olaraq 9-cu sətirdə int tipi görsənib:
Dictonary tipinin tuple tipindən fərqi ondadır ki, python 3.6 versiyasından etibarən, dictionary mutable tipdir. Yəni onun hansısa elementini proqramın gedişatı zamanı dəyişdirmək mümkündür. Dictionary-lər key və value-lardan ibarət olurlar. Məsələn aşağıdakı nümunəyə baxaq.
Tuple immutable (dəyişilməz) olduğu üçün aşağıdakı onu aşağıdakı kimi dəyişdirmək xəta çıxardacaq:
luget_1 = {'masin':'car', 'reng':'color', 'telefon':'telephone'}
print(luget_1)
print(luget_1.keys())
print(luget_1.values())
# lugetin key-inin silinmesi onunla bagli olan value-nun da silinmesine getirib cixarir.
del luget_1['reng']
print(luget_1)
# lugetin son elementini popitem() vasitesile silmek mumkundur.
luget_1.popitem()
print(luget_1)
# update vasitesile lugeti update etmek mumkundur
luget_1.update({'ses':'voice'})
print(luget_1)
luget_2 = luget_1.copy()
luget_2.clear()
print()
print(luget_1)
print(luget_2)
Yuxarıdakı kod parçası ekrana aşağıdakı nəticələri çap edəcəkdir.
Dəyərləri saxlaya biləcəyimiz digər bir data tipi isə lüğətlərdir. Python 3.6 versiyasından etibarən lüğətlər ordered (sequential) və mutable data tipləri sayılırlar. Lüğətlər {} fiqurlu mötərizələr vasitəsilə tanıdılır, key (açar) və value (dəyər)lərdən ibarət olurlar. Məsələn:
nümunə_1 = {'maşın':'car', 'test':'test', 'kitab':'book'} # standart dictionary tanıtımı
nümunə_2 = {} # boş dictionary bu cür tanıdılır
nümunə_3 = {'Ali':1234, 'Mammad':12345, 'Aziz':123456, 'Orxan':'test'} # dictionary içində bir neçə fərqli data tipi ola bilər
nümunə_4 = { # mürəkkkəb dictionary-ni alt-alta yazmaq daha rahatdır.
'1':{'ad':'Ali', 'soyad':'aliyev'},
'2':{'ad':'Mammad','soyad':'Mammadov'}
}
# hər bir lüğətin necə çap olunduğuna baxaq
print(nümunə_1, nümunə_2, nümunə_3, nümunə_4)
# lüğətin spesifik elementini listlərdə olduğu kimi indekslər vasitəsilə olmasa da,
# key-lər vasitəsilə tapmaq olar. Məsələn:
print(nümunə_1['kitab']) # ekrana book çıxardacaq.
print(nümunə_4['1']['ad']) # ekrana Ali çıxardacaq.
print("\nKeylər: " + str(nümunə_3.keys())) #
print("Valuelar: " + str(nümunə_3.values())) #
print("İtemlər: " + str(nümunə_3.items())) #
print("\nnümunə_1 variable:")
for açarsöz in nümunə_1.keys():
print(açarsöz + '->' + nümunə_1[açarsöz])
print("\nnümunə_4 variable:")
for açarsöz,dəyər in nümunə_4.items():
for dəyər2 in dəyər.keys():
print(açarsöz, dəyər2, dəyər[dəyər2])
Yuxarıdakı kod ekrana aşağıdakı nəticəni çap edəcək: