Skip to content

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.

Setni boshqa ma'lumot turlaridan farqlari:

  • Saralanmagan ma'lumot turi.
  • O'zgarmas tuple kabi.
  • indexlanmagan.

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.

bu_set = {"olma", "anor", "behi"}
print(bu_set)

Natija:

{'anor', 'behi', 'olma'}

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.

bu_set = {"olma", "anor", "behi", "anor"}
print(bu_set)

Natija:

{'anor', 'behi', 'olma'}
Bizda bir xil anor 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

bu_set = {1, "Farrux", True, 5, False, 1}
print(bu_set)

Natija:

{False, 1, 'Farrux', 5}

set uzunligini aniqlashimiz uchun biz yana len funksiyasiga murojaat qilishimiz kerak bo'ladi.

4-misol. set uzunligi.

bu_set = {1, "Farrux", True, 5, False, 1}
print(len(bu_set))

Natija:

4

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 indexlar orqali murojaat qilishni imkoni mavjud emas. Ammo bu ishni sikl operatori yordamida qilish mumkin.

6-misol.

bu_set = {"1", "2", "3"}

for s in bu_set:
  print(s)

Natija:

3
1
2

Sizda natija boshqa tartibda bo'lishi mumkin

7-misol. Element bor yoki yo'q ekanligini tekshirish

bu_set = {"1", "2", "3"}
print('1' in bu_set)

Natija:

True

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

bu_set = {1, 2, 3, 4, 5}
bu_set.add(6)
print(bu_set)

Natija:

{1, 2, 3, 4, 5, 6}

Boshqa set elementlarini qo'shish.

Agar sizda ikkita set bo'lsayu ikkalasini qo'shmoqchi bo'lsangiz setni update funksiyasidan foydalanishingiz mumkin.

9-misol.

set1 = {1, 2, 3}
set2 = {4, 5, 6}
set1.update(set2) # ser1 ga set2 qo'shildi.
print(set1)

Natija:

{1, 2, 3, 4, 5, 6}

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:

{1, 2, 3, 4, 5, 6}

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()

set1 = {1, 2, 3}
set1.remove(2)
print(set1)

Natija:

{1, 3}

Note

remove() bilan o'chirishda agar element mavjud bo'lmasa xatolik sodir bo'ladi.

Element mavjud bo'lmasa.

set1 = {1, 2, 3}
set1.remove(5)
print(set1)

Natija:

KeyError: 5

12-misol. discard()

set1 = {1, 2, 3}
set1.discard(2)
print(set1)

Natija:

{1, 3}

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()

set1 = {1, 2, 3}
x = set1.pop()
print('x = ', x)
print('set1 = ', set1)

Natija:

x =  1
set1 = {2, 3}

Note

set tartiblanmagan shu sababli pop() qaysi elementni qachon o'chirishini aytish imkonsiz.

14-misol. set elementlarini tozalash.

set1 = {1, 2, 3}
set1.clear()
print(set1) # barcha elementlar tozalandi.

Natija:

set()

15-misol. setni o'chirish

set1 = {1, 2, 3}
del set1 # bu o'zgaruvchi to'liq xotiradan o'chirildi.
print(set1)

Natija:

NameError: name 'set1' is not defined

set va sikl operatorlari

Boshqa to'plamli ma'lumot turlar kabi setni ham sikl operatorlari bilan ishlatishimiz mumkin.

16-misol.

bu_set = {1, 2, 3, 4, 5}
for s in bu_set:
    print(s)

Natija:

1
2
3
4
5

setlarni 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 unionni natijasini boshqa o'zgaruvchiga o'zlashtirish kerak bo'ladi.

a = {1, 3, 7}
b = {2, 4, 0}
c = a.union(b)
print(c)

Natija:

{0, 1, 2, 3, 4, 7}

unionni vazifasini bajarish uchun boshqa yana bir imkoniyat bor, bu imkoniyatni bizga | belgisi taqdim qiladi.

18-misol.

a = {1, 3, 7}
b = {2, 4, 0}
c = a | b
print(c)

Natija:

{0, 1, 2, 3, 4, 7}

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:

d =  {0, 1, 2, 3, 4, 7, 9, 11, 15}
e =  {0, 1, 2, 3, 4, 7, 9, 11, 15}

20-misol. set bilan tupleni birlashtirish.

union() funksiyasi set bilan boshqa turlarni birlashtirishga imkon beradi masalan tuple yoki list.

a = {1, 3, 7}
b = (2, 4, 0)
c = a.union(b)
print(c)

Natija:

{0, 1, 2, 3, 4, 7}

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.

a = {1, 3, 7}
b = {2, 4, 3}
c = a.intersection(b)
print(c)

Natija:

{3}

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

a = {1, 3, 7}
b = {2, 4, 3}
c = a & b
print(c)

Natija:

{3}

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.

a = {1, 3, 7}
b = {2, 4, 3}
a.intersection_update(b)
print(a)

Natija:

{3}

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.

a = {1, 3, 7, 5}
b = {2, 4, 3}
c = a.difference(b)
print(c)

Natija:

{1, 5, 7}

difference() funksiyasini vazifasini - operatori bilan almashtirishimiz mumkin.

25-misol.

a = {1, 3, 7, 5}
b = {2, 4, 3}
c = a - b
print(c)

Natija:

{1, 5, 7}

Note

- operatori faqat set bilan setni 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.

a = {1, 3, 7, 5}
b = {2, 4, 3}
c = a.symmetric_difference(b)
print(c)

Natija:

{1, 2, 4, 5, 7}

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.

a = {1, 3, 7, 5}
b = {2, 4, 3}
c = a ^ b
print(c)

Natija:

{1, 2, 4, 5, 7}

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.

a = {1, 3, 7, 5}
b = {2, 4, 3}
a.symmetric_difference_update(b)
print(a)

Natija:

{1, 2, 4, 5, 7}

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()

my_set = {1, 2, 3}
my_set.add(4)
print(my_set)  # Natija: {1, 2, 3, 4}

clear()

my_set = {1, 2, 3}
my_set.clear()
print(my_set)  # Natija: set()

copy()

my_set = {1, 2, 3}
new_set = my_set.copy()
print(new_set)  # Natija: {1, 2, 3}

difference()

set1 = {1, 2, 3}
set2 = {2, 3, 4}
diff = set1.difference(set2)
print(diff)  # Natija: {1}

difference_update()

set1 = {1, 2, 3}
set2 = {2, 3, 4}
set1.difference_update(set2)
print(set1)  # Natija: {1}

discard()

my_set = {1, 2, 3}
my_set.discard(2)
print(my_set)  # Natija: {1, 3}

intersection()

set1 = {1, 2, 3}
set2 = {2, 3, 4}
intersect = set1.intersection(set2)
print(intersect)  # Natija: {2, 3}

intersection_update()

set1 = {1, 2, 3}
set2 = {2, 3, 4}
set1.intersection_update(set2)
print(set1)  # Natija: {2, 3}

isdisjoint()

set1 = {1, 2, 3}
set2 = {4, 5, 6}
print(set1.isdisjoint(set2))  # Natija: True

issubset()

set1 = {1, 2}
set2 = {1, 2, 3}
print(set1.issubset(set2))  # Natija: True

issuperset()

set1 = {1, 2, 3}
set2 = {1, 2}
print(set1.issuperset(set2))  # Natija: True

pop()

my_set = {1, 2, 3}
item = my_set.pop()
print(item)     # Natija: 1 (yoki boshqa element)
print(my_set)   # Natija: Yangi element

remove()

my_set = {1, 2, 3}
my_set.remove(2)
print(my_set)  # Natija: {1, 3}

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}

union()

set1 = {1, 2}
set2 = {3, 4}
union_set = set1.union(set2)
print(union_set)  # Natija: {1, 2, 3, 4}

update()

set1 = {1, 2}
set2 = {3, 4}
set1.update(set2)
print(set1)  # Natija: {1, 2, 3, 4}