Python dərs 5 — list, tuple, dict, sets

Hasan Jafarov
5 min readMar 1, 2020

--

Bu dərsdə Pythonda data strukturlarından danışacayıq. Ən çox işlənənləri list, tuple, dictionary, set dir. İlk öncə list-dən başlayaq. List özündə fərqli tiplərdə datalar saxlayan data strukturdur. Hər bir datanın index dəyəri var. listdən data silmək əlavə etmək və s mümkündür. Boş bir list iki yolla yaratmaq olar.

a=[] #boş list

a=list() #boş list

Özündə müxtəlif tiplərdə məlumat saxlayan aşağıdakı listdən index dəyəri ilə bir və ya daha çox məlumat alaq. Burada alarıq eyni range-dakı məntiqlə saxlandığı üçün sadəcə nümunə olaraq yazacam.

a=[1,6,”8",True,”salam”,4.5]

print(a) #[1,6,”8",True,”salam”,4.5]

print(a[0]) #1

print(a[3]) #True

print(a[:3]) #[1,6,’8']

print(a[3:]) #[True,’salam’,4.5]

print(a[3:5]) #[True,’salam’]

print(a[1:3]) #[6,’8']

print(a[3:1]) #[]

print(a[1:6:2]) #[6,True,4.5]

list üzərində əməliyyatlar apararkən lazım olan funksiyalara baxaq.

1. append(x) — list-ə yeni data əlavə etmək üçün istifadə olunur. a[len(a):] = [x] ilə eynidir. a[len(a):] = [x,y] ilə listə bir neçə data da əlavə etmək olur. append ilə sadəcə 1 data əlavə etmək mümükündür.

a=[1,6,”8",True,”salam”,4.5]

print(a) #[1,6,”8",True,”salam”,4.5]

a.append(5)

print(a) #[1,6,”8",True,”salam”,4.5,5]

a[len(a):] = [5]

print(a) #[1,6,”8",True,”salam”,4.5,5,5]

a[len(a):] = [4,4]

print(a)#[1,6,”8",True,”salam”,4.5,5,5,4,4]

#a.append(4,4) #error

a.append([4,4])

print(a)#[1,6,”8",True,”salam”,4.5,5,5,4,4[4,4]]

2. extend(list) — listin sonuna yeni listin bütün elementlərini əlavə etmək üçün istifadə olunur. a[len(a):] = list ilə eynidir.

a=[1,6,”8",True,”salam”,4.5]

print(a) #[1,6,”8",True,”salam”,4.5]

a.extend([5,6,7])

print(a) #[1,6,”8",True,”salam”,4.5,5,6,7]

a[len(a):] = [5,6,7]

print(a) #[1,6,”8",True,”salam”,4.5,5,6,7,5,6,7]

3. insert(i,x) — listin i-ci indexə data əlavə edir. Əlavə edilən indexdən sonrakı bütün datalar. a[i+1]=a[i] şəklində yer dəyişir.

a=[1,6,”8",True,”salam”,4.5]

print(a) #[1,6,”8",True,”salam”,4.5]

a.insert(0,5)

print(a) #[5, 1, 6, ‘8’, True, ‘salam’, 4.5]

a.insert(100,5) #100 yazsaq xəta vermir sadəcə sona 5 yazır

print(a) #[5, 1, 6, ‘8’, True, ‘salam’, 4.5, 5]

4. remove(x) — listdən ilk x dəyərini silir. Əgər yoxdursa xəta qaytarır.

a=[1,6,”8",True,”salam”,4.5]

print(a) #[1,6,”8",True,”salam”,4.5]

a.remove(6)

print(a) #[1, ‘8’, True, ‘salam’, 4.5]

a.remove(4.5)

print(a) #[1, ‘8’, True, ‘salam’]

a.remove(6) #error

5. pop(i) — i-ci datanı listdən silir və geri qaytarır. əgər i indexində dəyər yoxdursa xəta qaytarır.

a=[1,6,”8",True,”salam”,4.5]

print(a) #[1,6,”8",True,”salam”,4.5]

print(a.pop(1)) #6

print(a) #[1, ‘8’, True, ‘salam’, 4.5]

print(a.pop(3)) #salam

print(a) #[1, ‘8’, True, 4.5]

#a.pop(66) #error

a.pop() #son datanı qaytarır

print(a)#[1, ‘8’, True]

6. index(x) — x dəyərində olan elemntin indexini qaytarır.

a=[1,6,”8",True,”salam”,4.5]

print(a) #[1,6,”8",True,”salam”,4.5]

print(a.index(1)) #0

print(a.index(‘8’)) #2

a.pop(7) #error

7. count(x) — x-in listdə neçə dəfə təkrarlandığı qaytarır. Heç yoxdursa 0 qaytarır.

a=[1,6,”8",True,”salam”,4.5,6]

print(a) #[1,6,”8",True,”salam”,4.5]

print(a.count(6)) #2

print(a.count(‘8’)) #1

print(a.count(7)) #0

8. len(list) — listin uzunluğunu yazır.

a=[1,6,”8",True,”salam”,4.5,6]

print(len(a)) #7

9. sort() — listi sıralayır. Sıralaya bilməsi üçün bütün datalar eyni tipdə və ya müqayisə oluna bilən şəkildə olmalıdır. Aşağıdakı şəkildə xəta verəcək çünki int ilə string dəyəri müqayisə edə bilmir.

a=[1,6,”8",True,”salam”,4.5,6]

a.sort() #error

Bu şəkildə xəta vermiyəcək

a=[1,6,8,4.5,6]

a.sort()

print(a) #[1, 4.5, 6, 6, 8]

10.reverse() — listi tərsinə çevirir.

a=[1,6,”8",True,”salam”,4.5,6]

a.reverse()

print(a) #[6, 4.5, ‘salam’, True, ‘8’, 6, 1]

11.del — listdən bir və ya bir neçə data silmək üçün istifadə olunur.

a=[1,6,”8",True,”salam”,4.5,6]

del a[1]

print(a)#[1, ‘8’, True, ‘salam’, 4.5, 6]

del a[3:]

print(a)#[1, ‘8’, True]

del a[1:2]

print(a)#[1, True]

a=[1,6,”8",True,”salam”,4.5,6]

del a[1:7:2]

print(a)#[1, ‘8’, ‘salam’, 6]

del a[9] #xeta

List yaratmağın aşağıdakı yolları da var.

meyveler = [‘alma’, ‘armud’, ‘nar’]

a=[meyve for meyve in meyveler]

print(a)#[‘alma’, ‘armud’, ‘nar’]

a=[x for x in range(1,10)]

print(a)#[1, 2, 3, 4, 5, 6, 7, 8, 9]

a=[x*x for x in range(1,10)]

print(a)#[1, 4, 9, 16, 25, 36, 49, 64, 81]

a=[x*x for x in range(1,10) if x<5]

print(a)#[1, 4, 9, 16]

Aşağıdakı nümunələr baxaq. List bu (a=b) şəkildə mənimsəndikdə sadəcə listin dəyərləri deyil onun Ram-da işarə etdiyi yerdə kopyalanır yəni hər mənada bu iki list eyniləşir.

a=[1,5,67,3,56]

b=a

del a[1]

print(a)#[1, 67, 3, 56]

print(b)#[1, 67, 3, 56]

del b[1]

print(a)#[1, 67, 3]

print(b)#[1, 67, 3]

b=a[:] şəklində yazdıqda isə sadəcə dəyəri kopyalanır və hər birinin öz dəyəri var və fərqli listlərdir.

a=[1,5,67,3,56]

b=a[:]

del a[1]

print(a)#[1, 67, 3, 56]

print(b)#[1, 5, 67, 3, 56]

del b[2]

print(a)#[1, 67, 3, 56]

print(b)#[1, 5, 3, 56]

İndi isə tuple nədir ona baxaq. Tuple eyni list kimi fərqli tiplərdə datalar saxlayır. Ancaq tək fərqi tuple immutabledır yəni dəyişdirmə yaratdıqdan sonra yeni data əlavə etmək olmaz. List [] ilə yazılırdısa tuple () ilə təyin olunur və ya mötərizəsiz də yazmaq olar. Aşağıdakı nümunələr baxaq.

a=(1,5,67,3,56)

b=1,5,67,3,56

print(a)#(1, 5, 67, 3, 56)

print(b)#(1, 5, 67, 3, 56)

print(a[1])#5

print(a[1:3])#(5,67)

a1=8

b1=8,

print(type(a1))#<class ‘int’>

print(type(b1))#<class ‘tuple’>

#a[1]=5 #error tuple immutabledir

a1,a2,a3,a4,a5=b

print(a1,a2,a3,a4,a5,sep=” “)#1 5 67 3 56

print(a.index(5))#1

print(a.index(3))#3

#print(a.index(4))#error

a=1,2,3,4,4,3,5,3,2,

print(a.count(3))#3

print(a.count(4))#2

del a[1] #error tuple immutabledır

Dictionary də list kimi mutable yəni dəyişdirilə biləndir. Ancaq fərqli olaraq dictionarydə key value məntiqi işləyir. Key istənilən tipdə ola bilər int string bool və s. Hər key-in bir value dəyəri olur. Key uniqe-dir yəni təkrarlana bilməz. Dictionay yaratmağın iki yolu var.
1. dict sözü ilə. a=dict()
2. {} ilə. a={}
Bir neçə dictionary nümunəsinə baxaq.
a={1:’bir’,2:’iki’}
a2={“ad”:”Hasan”,”soyad”:”Jafarov”}
a3={“bir”:1,”iki”:2}
a4={“bir”:1,”iki”:[1,2,3],”uc”:True}
a5=dict({1:”bir”,’2':”iki”})
a6=dict([(1,”bir”),(“2”,”iki”)])
a = {‘bir’: 1, ‘iki’: 2, ‘uc’: 3,’dord’:4,’bes’:’ela’}
print(‘bir’ in a)#True
print(1 in a)#False
print(len(a))#5
print(a)#{‘bir’: 1, ‘iki’: 2, ‘uc’: 3, ‘dord’: 4, ‘bes’: ‘ela’}
print(a[‘bir’])#1
del a[‘bir’]
print(a)#{‘iki’: 2, ‘uc’: 3, ‘dord’: 4, ‘bes’: ‘ela’}
#print(a[1])#error
dictionary-nin bütün metodlarına bu şəkildə baxa bilərik.
[‘__class__’, ‘__contains__’, ‘__delattr__’, ‘__delitem__’, ‘__dir__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__getattribute__’, ‘__getitem__’, ‘__gt__’, ‘__hash__’, ‘__init__’, ‘__init_subclass__’, ‘__iter__’, ‘__le__’, ‘__len__’, ‘__lt__’, ‘__ne__’, ‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__reversed__’, ‘__setattr__’, ‘__setitem__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’, ‘clear’, ‘copy’, ‘fromkeys’, ‘get’, ‘items’, ‘keys’, ‘pop’, ‘popitem’, ‘setdefault’, ‘update’, ‘values’]

1.Clear metodu dictionary-ni bütün key-value dəyərlərini təmizləyir.
a = {‘bir’: 1, ‘iki’: 2, ‘uc’: 3,’dord’:4,’bes’:’ela’}
a.clear()
print(a) #{}
2.copy metodu dictionay-ni kopyalayır.
a = {‘bir’: 1, ‘iki’: 2, ‘uc’: 3,’dord’:4,’bes’:’ela’}
a1=a.copy()
a1[‘bir’]=10
print(a1)#{‘bir’: 10, ‘iki’: 2, ‘uc’: 3, ‘dord’: 4, ‘bes’: ‘ela’}
print(a)#{‘bir’: 1, ‘iki’: 2, ‘uc’: 3, ‘dord’: 4, ‘bes’: ‘ela’}
3. update() — iki dictionay-ni birləşdirmək üçün istifadə olunur. Hər iki dictionary-də eyni adda key varsa ikinci dictionary-dəki qalır sadəcə.
a = {‘bir’: 1, ‘iki’: 2, ‘uc’: 3,’dord’:4,’bes’:’ela’}
a1={‘alti’:6,’yeddi’:7,’bes’:5}
a.update(a1)
print(a)#{‘bir’: 1, ‘iki’: 2, ‘uc’: 3, ‘dord’: 4, ‘bes’: 5, ‘alti’: 6, ‘yeddi’: 7}
4. items() — key-value dəyərlərini list şəklində döndürür.
a = {‘bir’: 1, ‘iki’: 2, ‘uc’: 3,’dord’:4,’bes’:’ela’}
print(a.items())#dict_items([(‘bir’, 1), (‘iki’, 2), (‘uc’, 3), (‘dord’, 4), (‘bes’, ‘ela’)])
for i,j in a.items():
print(i,j,sep=’=’,end=’ ‘)#bir=1 iki=2 uc=3 dord=4 bes=ela
for i,j in sorted(a.items()):
print(i,j,sep=’=’,end=’ ‘)#bes=ela bir=1 dord=4 iki=2 uc=3
5. keys() dəyərləri döndürür.
for i in sorted(a.keys()):
print(i,sep=’=’,end=’ ‘)#bes bir dord iki uc
6. values() — dəyərləri döndürür.
for i in a.values():
print(i,sep=’=’,end=’ ‘)#1 2 3 4 ela
7. zip() — key və value dəyərlərini birləşdirir.
a = {‘bir’: 1, ‘iki’: 2, ‘uc’: 3,’dord’:4,’bes’:’ela’}
key = list(a.keys())
value = list(a.values())
a2=dict(zip(key,value))
print(a2)#{‘bir’: 1, ‘iki’: 2, ‘uc’: 3, ‘dord’: 4, ‘bes’: ‘ela’}
8. get(key,”yoxdur”) — get key-in dəyərini qaytarır. key yoxdursa ikinci argumentin dəyəri döndürür.
a = {‘bir’: 1, ‘iki’: 2, ‘uc’: 3,’dord’:4,’bes’:’ela’}
print(a.get(‘bir’,’tapilmadi’))#1
print(a.get(‘birbir’,’tapilmadi’))#tapilmadi
9. setdefault — metodu dəyər əlavə edir.
a = {}
a[‘bir’]=1
print(a)#{‘bir’: 1}
a.setdefault(‘iki’,2)
print(a)#{‘bir’: 1, ‘iki’: 2}
10. pop(key) verilən key dəyərini silər. popitem() random hər hansı item-i silir.
a = {}
a[‘bir’]=1
print(a)#{‘bir’: 1}
a.setdefault(‘iki’,2)
print(a)#{‘bir’: 1, ‘iki’: 2}
a.pop(‘iki’)
print(a)#{‘bir’: 1}
a.popitem()
print(a)#{}

Set də list kimi istənilən tipdə məlumatlar saaxlayır və mutable-dır. Yuxarıdakı metodların əksəriyyəti set-lər üçün də işlədilə bilər. Bundan başqa frozenset adlanan immutable set-lər də var.
immutableset = frozenset([“Python”,3.14,5,’A’])
print(immutableset)#frozenset({‘Python’, 3.14, 5, ‘A’})
Bu frozenset-dən item silmək nə də əlavə etmək olmaz.

--

--

No responses yet