16 / 59

Python Sets

To'plamlar (Set) bilan tanishish

To'plam (set) — noyob (unique) ma'lumotlar to'plami, ya'ni to'plam ichidagi elementlar takrorlanmasligi kerak.

Masalan, agar talaba ID'lari haqidagi ma'lumotni saqlashimiz kerak bo'lsa, to'plam mos keladi, chunki talaba ID'lari takrorlanmasligi kerak.

Python to'plam elementlari

Python to'plam elementlari

Pythonda to'plam yaratish

Pythonda to'plamlarni barcha elementlarni figurali qavslar {} ichiga, vergul bilan ajratib joylashtirish orqali yaratamiz.

To'plam istalgan sondagi elementlarga ega bo'lishi va ular turli turdagi (integer, float, tuple, string va h.k.) bo'lishi mumkin. Lekin to'plam o'z elementi sifatida ro'yxat, to'plam yoki lug'at kabi o'zgaruvchan (mutable) elementlarga ega bo'la olmaydi.

Keling, bir misolni ko'rib chiqamiz,

example.py
# integer turidagi to'plam yaratish
student_id = {112, 114, 116, 118, 115}
print('Student ID:', student_id)

# string turidagi to'plam yaratish
vowel_letters = {'a', 'e', 'i', 'o', 'u'}
print('Vowel Letters:', vowel_letters)

# aralash ma'lumot turlaridan iborat to'plam yaratish
mixed_set = {'Hello', 101, -2, 'Bye'}
print('Set of mixed data types:', mixed_set)

Natija

kod
Student ID: {112, 114, 115, 116, 118}
Vowel Letters: {'u', 'a', 'e', 'i', 'o'}
Set of mixed data types: {'Hello', 'Bye', 101, -2}

Yuqoridagi misolda biz barcha elementlarni figurali qavslar {} ichiga joylashtirib, turli xil to'plamlar yaratdik.

Eslatma: Bu kodni ishga tushirganingizda, natijani boshqacha tartibda olishingiz mumkin. Buning sababi, to'plam hech qanday aniq tartibga ega emas.

Pythonda bo'sh to'plam yaratish

Bo'sh to'plam yaratish biroz murakkabroq. Bo'sh figurali qavslar {} Pythonda bo'sh lug'at hosil qiladi.

Hech qanday elementga ega bo'lmagan to'plam yaratish uchun, biz set() funksiyasidan hech qanday argumentsiz foydalanamiz. Masalan,

example.py
# bo'sh to'plam yaratish
empty_set = set()

# bo'sh lug'at yaratish
empty_dictionary = { }

# empty_set ma'lumot turini tekshirish
print('Data type of empty_set:', type(empty_set))

# empty_dictionary ma'lumot turini tekshirish
print('Data type of empty_dictionary:', type(empty_dictionary))

Natija

kod
Data type of empty_set: <class 'set'>
Data type of empty_dictionary: <class 'dict'>

Bu yerda,

  • empty_set — set() yordamida yaratilgan bo'sh to'plam
  • empty_dictionary — {} yordamida yaratilgan bo'sh lug'at

Nihoyat, biz empty_set va empty_dictionary qaysi klassga tegishli ekanligini bilish uchun type() funksiyasidan foydalandik.

To'plamdagi takrorlanuvchi elementlar

Keling, to'plamga takrorlanuvchi elementlarni qo'shishga urinib ko'rsak, nima bo'lishini ko'ramiz.

example.py
numbers = {2, 4, 6, 6, 2, 8}
print(numbers)   # {8, 2, 4, 6}

Bu yerda ko'rib turganimizdek, to'plamda takrorlanuvchi elementlar yo'q, chunki to'plam takrorlanuvchi qiymatlarni o'z ichiga ola olmaydi.

Pythonda to'plam elementlarini qo'shish va yangilash

To'plamlar o'zgaruvchan (mutable). Biroq, ular tartiblanmagani uchun, indekslashning ma'nosi yo'q.

Indekslash yoki slicing yordamida to'plam elementiga murojaat qila olmaymiz yoki uni o'zgartira olmaymiz. To'plam ma'lumot turi buni qo'llab-quvvatlamaydi.

Pythonda to'plamga elementlar qo'shish

Pythonda to'plamga element qo'shish uchun add() metodidan foydalanamiz. Masalan,

example.py
numbers = {21, 34, 54, 12}

print('Initial Set:',numbers)

# add() metodidan foydalanish
numbers.add(32)

print('Updated Set:', numbers) 

Natija

kod
Initial Set: {34, 12, 21, 54}
Updated Set: {32, 34, 12, 21, 54}

Yuqoridagi misolda biz numbers nomli to'plam yaratdik. Quyidagi qatorga e'tibor bering,

example.py
numbers.add(32)

Bu yerda add() to'plamimizga 32ni qo'shadi.

Python to'plamini yangilash

update() metodi to'plamni boshqa kolleksiya turlari (ro'yxatlar, kortejlar, to'plamlar va h.k.) elementlari bilan yangilash uchun ishlatiladi. Masalan,

example.py
companies = {'Lacoste', 'Ralph Lauren'}
tech_companies = ['apple', 'google', 'apple']

# update() metodidan foydalanish
companies.update(tech_companies)

print(companies)

# Natija: {'google', 'apple', 'Lacoste', 'Ralph Lauren'}

Bu yerda tech_companiesning barcha noyob elementlari companies to'plamiga qo'shiladi.

To'plamdan elementni o'chirish

Biz to'plamdan belgilangan elementni o'chirish uchun discard() metodidan foydalanamiz. Masalan,

example.py
languages = {'Swift', 'Java', 'Python'}

print('Initial Set:',languages)

# to'plamdan 'Java'ni o'chirish
removedValue = languages.discard('Java')

print('Set after remove():', languages)

Natija

kod
Initial Set: {'Python', 'Swift', 'Java'}
Set after remove(): {'Python', 'Swift'}

Bu yerda biz languages to'plamidan 'Java'ni o'chirish uchun discard() metodidan foydalandik.

To'plam bilan ishlaydigan tayyor (built-in) funksiyalar

Mana to'plamda turli amallarni bajarish imkonini beruvchi ba'zi mashhur tayyor funksiyalar.

FunksiyaTavsif
all()To'plamning barcha elementlari true bo'lsa (yoki to'plam bo'sh bo'lsa) True qaytaradi.
any()To'plamning istalgan elementi true bo'lsa True qaytaradi. Agar to'plam bo'sh bo'lsa, False qaytaradi.
enumerate()enumerate obyektini qaytaradi. U to'plamning barcha elementlarining indeksi va qiymatini juftlik sifatida o'z ichiga oladi.
len()To'plamning uzunligini (elementlar sonini) qaytaradi.
max()To'plamdagi eng katta elementni qaytaradi.
min()To'plamdagi eng kichik elementni qaytaradi.
sorted()To'plamdagi elementlardan yangi saralangan ro'yxat qaytaradi (to'plamning o'zini saralamaydi).
sum()To'plamdagi barcha elementlarning yig'indisini qaytaradi.

Pythonda to'plam bo'ylab aylanib chiqish

example.py
fruits = {"Apple", "Peach", "Mango"}

# har bir mevaga murojaat qilish uchun for sikli
for fruit in fruits: 
    print(fruit)

Natija

kod
Mango
Peach
Apple

Bu yerda biz Pythonda to'plam bo'ylab aylanib chiqish uchun for siklidan foydalandik.

To'plam elementlari sonini topish

To'plamda mavjud elementlar sonini topish uchun len() metodidan foydalanishimiz mumkin. Masalan,

example.py
even_numbers = {2,4,6,8}
print('Set:',even_numbers)

# elementlar sonini topish
print('Total Elements:', len(even_numbers))

Natija

kod
Set: {8, 2, 4, 6}
Total Elements: 4

Bu yerda biz to'plamda mavjud elementlar sonini topish uchun len() metodidan foydalandik.

Python to'plam amallari

Python to'plami union (birlashma), intersection (kesishma), subtraction (ayirma) va symmetric difference (nosimmetrik farq) kabi matematik to'plam amallarini bajarish uchun turli xil tayyor metodlarni taqdim etadi.

Ikkita to'plamning birlashmasi (Union)

A va B to'plamlarining birlashmasi A va B to'plamlarining barcha elementlarini o'z ichiga oladi.

Pythonda to'plamlar birlashmasi

Birlashma amalini bajarish uchun | operatoridan yoki union() metodidan foydalanamiz. Masalan,

example.py
# birinchi to'plam
A = {1, 3, 5}

# ikkinchi to'plam
B = {0, 2, 4}

# | yordamida birlashma amalini bajarish
print('Union using |:', A | B)

# union() yordamida birlashma amalini bajarish
print('Union using union():', A.union(B)) 

Natija

kod
Union using |: {0, 1, 2, 3, 4, 5}
Union using union(): {0, 1, 2, 3, 4, 5}

Eslatma: A|B va union() A ⋃ B to'plam amaliga teng.

To'plamlar kesishmasi (Intersection)

A va B to'plamlarining kesishmasi A va B to'plamlari orasidagi umumiy elementlarni o'z ichiga oladi.

Pythonda to'plamlar kesishmasi

Pythonda kesishma amalini bajarish uchun & operatoridan yoki intersection() metodidan foydalanamiz. Masalan,

example.py
# birinchi to'plam
A = {1, 3, 5}

# ikkinchi to'plam
B = {1, 2, 3}

# & yordamida kesishma amalini bajarish
print('Intersection using &:', A & B)

# intersection() yordamida kesishma amalini bajarish
print('Intersection using intersection():', A.intersection(B)) 

Natija

kod
Intersection using &: {1, 3}
Intersection using intersection(): {1, 3}

Eslatma: A&B va intersection() A ⋂ B to'plam amaliga teng.

Ikkita to'plam orasidagi farq (Difference)

A va B to'plamlari orasidagi farq A to'plamining B to'plamida mavjud bo'lmagan elementlarini o'z ichiga oladi.

Pythonda to'plamlar farqi

Ikkita to'plam orasidagi farqni bajarish uchun - operatoridan yoki difference() metodidan foydalanamiz. Masalan,

example.py
# birinchi to'plam
A = {2, 3, 5}

# ikkinchi to'plam
B = {1, 2, 6}

# & yordamida farq amalini bajarish
print('Difference using &:', A - B)

# difference() yordamida farq amalini bajarish
print('Difference using difference():', A.difference(B)) 

Natija

kod
Difference using &: {3, 5}
Difference using difference(): {3, 5}

Eslatma: A - B va A.difference(B) A - B to'plam amaliga teng.

To'plamlarning nosimmetrik farqi (Symmetric Difference)

A va B to'plamlarining nosimmetrik farqi A va Bning umumiy elementlarisiz barcha elementlarini o'z ichiga oladi.

Pythonda to'plamlarning nosimmetrik farqi

Pythonda ikkita to'plam orasidagi nosimmetrik farqni bajarish uchun ^ operatoridan yoki symmetric_difference() metodidan foydalanamiz. Masalan,

example.py
# birinchi to'plam
A = {2, 3, 5}

# ikkinchi to'plam
B = {1, 2, 6}

# & yordamida farq amalini bajarish
print('using ^:', A ^ B)

# symmetric_difference() dan foydalanish
print('using symmetric_difference():', A.symmetric_difference(B)) 

Natija

kod
using ^: {1, 3, 5, 6}
using symmetric_difference(): {1, 3, 5, 6}

Ikkita to'plam tengligini tekshirish

Ikkita to'plam teng yoki teng emasligini tekshirish uchun == operatoridan foydalanishimiz mumkin. Masalan,

example.py
# birinchi to'plam
A = {1, 3, 5}

# ikkinchi to'plam
B = {3, 5, 1}

# & yordamida farq amalini bajarish
if A == B:
    print('Set A and Set B are equal')
else:
    print('Set A and Set B are not equal')

Natija

kod
Set A and Set B are equal

Yuqoridagi misolda A va B bir xil elementlarga ega, shuning uchun

example.py
if A == B

sharti True bo'ladi. Shuning uchun if ichidagi print('Set A and Set B are equal') operatori bajariladi.

Boshqa Python to'plam metodlari

Ko'plab to'plam metodlari mavjud, ulardan ba'zilarini yuqorida allaqachon ishlatdik. Mana to'plam obyektlari bilan mavjud bo'lgan barcha metodlar ro'yxati:

MetodTavsif
add()To'plamga element qo'shadi
clear()To'plamdan barcha elementlarni o'chiradi
copy()To'plamning nusxasini qaytaradi
difference()Ikki yoki undan ortiq to'plamning farqini yangi to'plam sifatida qaytaradi
difference_update()Boshqa to'plamning barcha elementlarini shu to'plamdan o'chiradi
discard()Agar element to'plamda mavjud bo'lsa, uni o'chiradi. (Agar element to'plamda bo'lmasa, hech narsa qilmaydi)
intersection()Ikki to'plamning kesishmasini yangi to'plam sifatida qaytaradi
intersection_update()To'plamni o'zi va boshqa to'plamning kesishmasi bilan yangilaydi
isdisjoint()Agar ikki to'plamning kesishmasi bo'sh bo'lsa True qaytaradi
issubset()Agar boshqa to'plam shu to'plamni o'z ichiga olsa True qaytaradi
issuperset()Agar shu to'plam boshqa to'plamni o'z ichiga olsa True qaytaradi
pop()To'plamdan tasodifiy elementni o'chiradi va qaytaradi. To'plam bo'sh bo'lsa KeyError beradi
remove()To'plamdan elementni o'chiradi. Agar element to'plamda bo'lmasa, KeyError beradi
symmetric_difference()Ikki to'plamning nosimmetrik farqini yangi to'plam sifatida qaytaradi
symmetric_difference_update()To'plamni o'zi va boshqa to'plamning nosimmetrik farqi bilan yangilaydi
union()To'plamlar birlashmasini yangi to'plam sifatida qaytaradi
update()To'plamni o'zi va boshqalarning birlashmasi bilan yangilaydi
QBilimingizni sinab ko'ring
1 / 3

1. To'plam (set) ro'yxatdan (list) nimasi bilan farq qiladi?