Set ma'lumot turi haqida asosiy tushunchalar
Set
bundan oldin ko'rgan list
va tuple
kabi bitta o'zgaruvchidan ma'lumotlar to'plamini saqlash uchun mo'ljallangan ma'lumot turi hisoblanadi.
Set
ni boshqa ma'lumot turlaridan farqlari:
- Saralanmagan ma'lumot turi.
- O'zgarmas
tuple
kabi. index
lanmagan.
Note
Set elemenlari o'zgarmas, ammo o'chirish va yangi element qo'shish mumkin.
Setni e'lon qilish uchun {
ochish va }
yopish bilan amalga oshiriladi.
E'lon qilish.
1-misol. E'lon qilish.
Natija:
Note
Sizda natija boshqa tartibda chiqishi mumkin chunki biz yuqorida aytib o'tdik set
tartiblanmagan ma'lumot turi. Har qayta murojaatdan so'ng tartibi o'zgarib chiqadi.
Set
ma'lumot turi elementlarining takrorlanishiga ruhsat bermaydi. Agar bir nechta bir xil element bo'lsa faqat bittasi set
elementi sifatida qabul qilinadi.
2-misol.
Natija:
Bizda bir xilanor
elementi bo'lganligi sababli bittasi o'chirildi.
Note
Set ma'lumotlar tuzilmasida True
va 1
bir xil deb qabul qilinadi agar ikkalasi bitta set
da mavjud bo'lsa faqat bittasi qabul qilinadi.
Xuddo shu kabi False
va 0
ni ham bir xil deb qabul qiladi.
3-misol. True va 1
Natija:
set
uzunligini aniqlashimiz uchun biz yana len
funksiyasiga murojaat qilishimiz kerak bo'ladi.
4-misol. set uzunligi.
Natija:
Note
Uzunlikni hisoblashda takrorlangan elementlar olib tashlanadi keyin uzunlik hisoblanadi.
Set ham barcha turdagi ma'lumotlar tuzilmalarini qiymat sifatida olishi mumkin.
5-misol.
set1 = {"apple", "banana", "cherry"}
set2 = {1, 5, 7, 9, 3}
set3 = {True, False, False}
set4 = {True, 5, 'Banan'}
Set elementlari bilan ishlash
Set elementlariga index
lar orqali murojaat qilishni imkoni mavjud emas. Ammo bu ishni sikl operatori yordamida qilish mumkin.
6-misol.
Natija:
Sizda natija boshqa tartibda bo'lishi mumkin
7-misol. Element bor yoki yo'q ekanligini tekshirish
Natija:
Set yangi element qo'shish.
Set e'lon qilinganidan so'ng uning elementlarini o'zgartiraolamysiz lekin yangi elemnt qo'shishingiz mumkin. Bunda bizga add()
yordam beradi.
8-misol. Yangi element qo'shish
Natija:
Boshqa set elementlarini qo'shish.
Agar sizda ikkita set bo'lsayu ikkalasini qo'shmoqchi bo'lsangiz set
ni update
funksiyasidan foydalanishingiz mumkin.
9-misol.
Natija:
list elementlarini qo'shish
10-misol
set1 = {1, 2, 3}
set2 = [4, 5, 6]
set1.update(set2) # ser1 ga set2 ro'yxat elementlari qo'shildi.
print(set1)
Natija:
update()
funksiyasiga berilgan qiymat aynan set
bo'lishi shart emas, qiymatlar, list
, tuple
ham bo'lishi mumkin.
Setdan element o'chirish
Element o'chirish uchun bizga remove()
yoki discard()
yordam beradi.
11-misol. remove()
Natija:
Note
remove()
bilan o'chirishda agar element mavjud bo'lmasa xatolik sodir bo'ladi.
Element mavjud bo'lmasa.
Natija:
12-misol. discard()
Natija:
Note
discard()
bilan o'chirishda agar element mavjud bo'lmasa xatolik sodir bo'lmaydi.
Set elementlarini o'chirishni yana bir usuli bu pop()
funksiyasi bilan o'chirish, bu funksiyani tepada ko'rib o'tgan funksiyalardan asosiy
farqi shundagi pop()
aynan bir elementni emas tasodifiy
elementni o'chiradi. Ammo o'chirgan elementini qiymat qaytaradi ya'ni biz o'chgan elementni biror o'zgaruvchiga saqlab olishimiz mumkin.
13-misol. pop()
Natija:
Note
set
tartiblanmagan shu sababli pop()
qaysi elementni qachon o'chirishini aytish imkonsiz.
14-misol. set
elementlarini tozalash.
Natija:
15-misol. set
ni o'chirish
Natija:
set
va sikl operatorlari
Boshqa to'plamli ma'lumot turlar kabi set
ni ham sikl operatorlari bilan ishlatishimiz mumkin.
16-misol.
Natija:
set
larni birlashtrirish
Pythonda bir nechta set
to'plamlarini birlashtirishni bir qancha usullar mavjud.
- union() va update() - ikkala to'plamni barchasini birlashtiradi.
- intersection() - faqat bir-birida bor elementlarni.
- difference() - birinchi to'plamda bor lekin ikkinchisida yo'qlarini birlashtiradi.
- symmetric_difference() - bir-birida borlaridan boshqa barchasini birlashtiradi.
Endi har biri uchun misollar ko'rib chiqamiz.
17-misol. union()
union()
ikkala to'plamni qo'shganidan so'ng yangi to'plamni qaytaradi, shuning uchun union
ni natijasini boshqa o'zgaruvchiga o'zlashtirish kerak bo'ladi.
Natija:
union
ni vazifasini bajarish uchun boshqa yana bir imkoniyat bor, bu imkoniyatni bizga |
belgisi taqdim qiladi.
18-misol.
Natija:
Natija bir xil!
19-misol. Ikkidan ortiq to'plamlarni birlashtirish
a = {1, 3, 7}
b = {2, 4, 0}
c = {11, 15, 9}
d = a.union(b, c)
e = a | b | c
print('d = ', d)
print('e = ', e)
Natija:
20-misol. set
bilan tuple
ni birlashtirish.
union()
funksiyasi set
bilan boshqa turlarni birlashtirishga imkon beradi masalan tuple
yoki list
.
Natija:
Note
|
bilan birlashtirish faqat set
va set
uchun to'g'ri keladi, agar set
va boshqa tur bo'lsa union()
dan foydalanish kerak.
Note
union() va update() funksiyalari ikkalasi ham bir-birida borlarini qo'shmaydi. Yuqorida bularga misollar ko'rdik.
21-misol. Intersection()
Intersection()
funksiyasi yangi set
hosil qilib qaytaradi, faqat ikkala to'plamda bor elementlarni o'z ichiga oladi.
Natija:
Ikkala to'plamda 3
bo'lgani uchun faqat 3
olindi.
Info
intersection()
funksiyasi vazifasini &
operatori bilan ham amalga oshirish mumkin. Bu operator faqat set
bilan set
ni birlashtirish uchun
ishlaydi boshqa ma'lumot turlari bilan intersection()
dan foydalnaish kerak bo'ladi.
22-misol. &
operatori
Natija:
To'plamlarni birlashtirish uchun intersection_update()
funksiyasi ham mavjud, bu funksiya faqat bir-birida borlarini birlashtirish uchun foydalaniladi.
intersection()
dan farqi bu yangi to'plam qaytarmasdan, haqiqiysini yangilaydi.
23-misol.
Natija:
Note
difference()
funksiyasi ham yangi to'plam qaytaradi, faqat birinchi to'plamda mavjudlarini qachonki ikkinchi
to'plamda shu elementlar bo'lmasa. Agar biror element ikkinchi to'plamsa bo'lsa shu element olinmaydi.
24-misol.
Natija:
difference()
funksiyasini vazifasini -
operatori bilan almashtirishimiz mumkin.
25-misol.
Natija:
Note
-
operatori faqat set
bilan set
ni birlashtirish uchun ishlaydi, agar boshqa tur bilan birlashtirish kerak bo'lsa
difference()
dan foydalanish zarur bo'ladi.
To'plamlar bilan ishlashda symmetric_difference()
funksiyasi ham mavjud bo'lib bu funksiya elementlar bir-birida bo'lmaganlarini birlashtiradi va yangi
to'plamni qaytaradi.
26-misol.
Natija:
symmetric_difference()
funksiyasi o'rniga ^
operatoridan foydalanishimiz ham mumkin, faqat ikkala to'plam set
bo'lganda amal qiladi.
Agar boshqa turdagi to'plam bilan birlashtirish zarurati bo'lsa symmetric_difference()
dan foydalanish kerk bo'ladi.
27-misol.
Natija:
Agar sizga symmetric_difference()
imkoniyati kerak bo'lsayu lekin yangi to'plam emas haqiqiy to'plamni yangilash kerak bo'lsa
symmetric_difference_update()
funksiyasidan foydalanish kerak bo'ladi.
28-misol.
Natija:
set
bilan ishlash uchun maxsus funksiyalar
Metod | Qisqartma | Tavsif |
---|---|---|
add() |
- | To'plamga element qo'shadi |
clear() |
- | To'plamdagi barcha elementlarni o'chiradi |
copy() |
- | To'plamning nusxasini qaytaradi |
difference() |
- | Ikki yoki undan ortiq to'plamlar o'rtasidagi farqni qaytaradi |
difference_update() |
-= |
Bu to'plamdan boshqa, ko'rsatilgan to'plamdagi elementlarni olib tashlaydi |
discard() |
- | Ko'rsatilgan elementni o'chiradi |
intersection() |
& |
Ikki yoki undan ortiq to'plamlar o'rtasidagi kesishmani qaytaradi |
intersection_update() |
&= |
Bu to'plamdan boshqa, ko'rsatilgan to'plamlarda mavjud bo'lmagan elementlarni olib tashlaydi |
isdisjoint() |
- | Ikki to'plamning umumiy elementi bor yoki yo'qligini qaytaradi |
issubset() |
<= |
Boshqa to'plam ushbu to'plamni o'z ichiga olgan-olmaganligini qaytaradi |
< |
- | Ushbu to'plamdagi barcha elementlar boshqa, ko'rsatilgan to'plamda borligini qaytaradi |
issuperset() |
>= |
Ushbu to'plam boshqa to'plamni o'z ichiga olgan yoki olmaganligini qaytaradi |
> |
- | Boshqa, ko'rsatilgan to'plamdagi barcha elementlar ushbu to'plamda borligini qaytaradi |
pop() |
- | To'plamdan elementni olib tashlaydi va uni qaytaradi |
remove() |
- | Ko'rsatilgan elementni o'chiradi |
symmetric_difference() |
^ |
Ikki to'plamning simmetrik farqini qaytaradi |
symmetric_difference_update() |
^= |
Ushbu to'plamga boshqa to'plam bilan simmetrik farqni qo'shadi |
union() |
\| |
To'plamlarning birlashmasini qaytaradi |
update() |
\|= |
Ushbu to'plamni boshqa to'plamlar bilan birlashtiradi |
Misollar
add()
clear()
copy()
difference()
difference_update()
discard()
intersection()
set1 = {1, 2, 3}
set2 = {2, 3, 4}
intersect = set1.intersection(set2)
print(intersect) # Natija: {2, 3}
intersection_update()
isdisjoint()
issubset()
issuperset()
pop()
my_set = {1, 2, 3}
item = my_set.pop()
print(item) # Natija: 1 (yoki boshqa element)
print(my_set) # Natija: Yangi element
remove()
symmetric_difference()
set1 = {1, 2, 3}
set2 = {2, 3, 4}
sym_diff = set1.symmetric_difference(set2)
print(sym_diff) # Natija: {1, 4}
symmetric_difference_update()
set1 = {1, 2, 3}
set2 = {2, 3, 4}
set1.symmetric_difference_update(set2)
print(set1) # Natija: {1, 4}