Ma’lumot to’plamlari mavzusini Set (to’plam) bilan davom ettiramiz. Set matematikadagi to’plam tushunchasiga eng yaqin turdir va u bir muhim vazifani mukammal bajaradi — takrorlanuvchi qiymatlarni yo’q qilish.
Set (to’plam) — tartibsiz, takrorlanmaydigan elementlardan tashkil topgan to’plam. U jingalak qavs
{}ichida yoziladi. Har bir element faqat bir marta saqlanadi va elementlar ma’lum tartibga ega emas.
Set yaratish va takrorning yo’qolishi
Set’ning eng ko’zga tashlanadigan xususiyati — takroriy qiymatlarni avtomatik olib tashlashi:
sonlar = {1, 2, 2, 3, 3, 3, 4}
print(sonlar)
print(len(sonlar))
{1, 2, 3, 4}
Takrorlar yo’qoldi. Aynan shu sabab agar sizda takroriy elementli ro’yxat bo’lsa va uni tozalash kerak bo’lsa, uni Set’ga aylantirish eng oson yechim:
mahsulotlar = ["telefon", "noutbuk", "telefon", "smart soat", "noutbuk"]
noyob = set(mahsulotlar)
print(noyob)
print(len(noyob))
{'telefon', 'noutbuk', 'smart soat'}
3
Element qo’shish va o’chirish
Set o’zgaruvchan — unga element qo’shish (add) va olib tashlash (discard) mumkin:
tillar = {"python", "php"}
tillar.add("javascript")
tillar.discard("php")
print(tillar)
{'python', 'javascript'}
add yangi elementni qo’shadi (agar allaqachon bo’lsa, e’tiborsiz qoldiradi), discard esa elementni xavfsiz o’chiradi (bo’lmasa ham xato bermaydi).
To’plam amallari
Set’ning haqiqiy kuchi matematik to’plam amallarida — kesishma, birlashma, ayirma. Ularni jadvalda ko’ramiz:
| Amal | Operator | Ma’nosi |
|---|---|---|
| Birlashma | | |
ikkalasidagi barcha elementlar |
| Kesishma | & |
ikkalasida ham bor elementlar |
| Ayirma | - |
birinchida bor, ikkinchida yo’q |
| Simmetrik ayirma | ^ |
faqat bittasida bor elementlar |
Amalda:
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b) # birlashma
print(a & b) # kesishma
print(a - b) # ayirma
{1, 2, 3, 4, 5, 6}
{3, 4}
{1, 2}
Bu amallar real hayotda juda foydali. Masalan, ikki foydalanuvchining umumiy qiziqishlarini topish — bu kesishma; ikki blogpost teglarining birlashmasini olish — bu birlashma.
Set qachon to’g’ri tanlov?
Set’ni List bilan solishtirganda uch ustunligi bor: takrorni yo’q qiladi, element bor-yo’qligini tekshirish (in) juda tez, va to’plam amallarini qo’llab-quvvatlaydi:
katta_royxat = set(range(1000000))
print(999999 in katta_royxat)
True
Millionlab elementli Set’da in tekshiruvi deyarli bir zumda bajariladi — List’da bu ancha sekin bo’lardi. Faqat bitta cheklov: Set tartibsiz, shuning uchun indeks bo’yicha (set[0]) murojaat qilib bo’lmaydi.
Xulosa
Bu darsda Set — takrorlanmas, tartibsiz to’plam bilan tanishdik, takrorlarni tozalashni, add/discard metodlarini va birlashma/kesishma/ayirma amallarini o’rgandik. Set noyob qiymatlar va tez tekshiruv uchun ideal. Keyingi darsda shart amallariga — If … Else’ga o’tamiz.