Çoxluq – nizamlanmamış təkrarlanmayan elementlər toplusudur. Python dilində iki növ çoxluq tipi var: set və frozenset. Bunların arasındakı yeganə fərq ondan ibarətdir ki, set dəyişən, frozenset isə dəyişməyən tipdir. Daha dəqiq desək, set tipindəki elementlər toplusunu dəyişmək (yeni element əlavə etmək və çıxarmaq) mümkündür, frozenset tipində isə bu mümkün deyil.
Çoxluqlar aşağıdakı üsullarla konstruksiya edilə bilər:
>>> {7, 4.44, 'z', "Turan", False}
{False, 'z', 'Turan', 4.44, 7}
>>> st1 = {2, 4, 8, 16}
>>> st2 = set('abcde')
>>> st3 = set({3,6,9})
>>> st4 = set()
>>> fs1 = frozenset('fghij')
>>> fs2 = frozenset({2,4,6,8})
>>> fs3 = frozenset()
>>> type(st1)
<class 'set'>
>>> type(fs1)
<class 'frozenset'>
>>>
Bir-birindən vergüllə (,) ayrılan çoxluğun elementləri müxtəlif tipdə qiymətlərdən ibarət ola bilər. Lakin təcrübədə, adətən, eynitipli elementlərdən istifadə edirlər. Çoxluğun özü isə fiqurlu mötərizə daxilində göstərilir. Çoxluqlar həmçinin set və frozenset konstruksiyaları ilə də verilə və boş da ola bilər. Yuxarıdakı proqramda st4 = set() və fs3 = frozenset() konstruksiyalarıdanboş çoxluqları düzəltmək üçün istifadə olundu. Çalışın ki, boş çoxluğu göstərmək üçün {} konstruksiyasından istifadə etməyəsiniz. Çünki interpretator bu yazılışı çoxluq kimi qəbul etməyəcək.
Çoxluqlar nizamlanmamış elementlər toplusu olduqlarına görə ardıcıllıq tiplərində olan indeksləmə, dilimləmə və s. kimi əməliyyatlar onlar üçün keçərli deyil.
Çoxluqların uzunluğunu len() funksiyası ilə müəyyən etmək mümkündür. Verilmiş qiymətin çoxluğa daxil olub-olmadığını isə üzvlük operatorları (in və not in) vasitəsilə yoxlamaq olar. Çoxluqlardan da for sayğaclı dövründə qiymətlər çoxluğu kimi istifadə oluna bilər.
Aşağıdakı cədvəldə set tipi ilə bağlı bir sıra metodlar verilmişdir:
| Metod | Təyinatı |
|---|---|
| add() | Çoxluğa element əlavə edir. |
| remove() | Verilmiş elementi çoxluqdan xaric edir. Göstərilmiş element çoxluqda yoxdursa, xəta qeydə alınır. |
| discard() | Verilmiş elementi çoxluqdan xaric edir. Göstərilmiş element çoxluqda yoxdursa, xəta qeydə alınmır. |
| pop() | Çoxluqdan ixtiyari bir elementi xaric edir və göstərir. Çoxluq boşdursa, xəta qeydə alınır. |
| clear() | Çoxluğun bütün elementlərini silir. |
| copy() | Çoxluğun nüsxəsini çıxardır. |
| update() | Çoxluğu özü ilə digər çoxluqları birləşdirərək yeniləyir. |
| union() | Çoxluqları birləşdirərək yeni bir çoxluq düzəldir. |
| difference() | Verilmiş çoxluqların fərqindən yeni bir çoxluq düzəldir. |
| difference_update() | Çoxluqdan digər çoxluğun bütün elementlərini xaric edir. |
| symmetric_difference() | Verilmiş çoxluqların simmetrik fərqindən yeni bir çoxluq düzəldir. |
| symmetric_difference_update() | Çoxluğu özü ilə digər çoxluğun simmetrik fərqini əldə edərək yeniləyir. |
| intersection() | Çoxluqların kəsişməsindən yeni bir çoxluq düzəldir. |
| intersection_update() | Çoxluğu özü ilə digər çoxluğun kəsişməsini əldə edərək yeniləyir. |
| isdisjoint() | Verilmiş iki çoxluq kəsişmədikdə True qiymətini qaytarır. |
| issubset() | Çoxluq digər çoxluğun alt çoxluğu olduqda True qiymətini qaytarır. |
| issuperset() | Çoxluq digər çoxluğun üst çoxluğu olduqda True qiymətini qaytarır. |
Aşağıdakı misalları nəzərdən keçirək:
>>> a = {1, 2, 3, 4}
>>> a.add(5)
>>> a
{1, 2, 3, 4, 5}
>>> a.remove(5)
>>> a
{1, 2, 3, 4}
>>>
>>> a.remove(5)
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
a.remove(5)
KeyError: 5
>>> a.discard(5)
>>> a.pop()
1
>>> a
{2, 3, 4}
>>> a.clear()
>>> a
set()
>>>
>>> a = {1, 2, 3}
>>> b = a.copy()
>>> b
{1, 2, 3}
>>> c = {4, 5}
>>> b.update(c)
>>> b
{1, 2, 3, 4, 5}
>>> d = {4, 5, 6, 7}
>>> e = b.union(d)
>>> e
{1, 2, 3, 4, 5, 6, 7}
>>> f = e.difference(d)
>>> f
{1, 2, 3}
>>> e.difference_update(f)
>>> e
{4, 5, 6, 7}
>>>
>>> a = {1, 2, 3, 4, 5}
>>> b = {4, 5, 6, 7, 8}
>>> a.symmetric_difference(b)
{1, 2, 3, 6, 7, 8}
>>> a.symmetric_difference_update(b)
>>> a
{1, 2, 3, 6, 7, 8}
>>>
>>> a = {1, 2, 3, 4, 5}
>>> b = {4, 5, 6, 7, 8}
>>> a.intersection(b)
{4, 5}
>>> a.intersection_update(b)
>>> a
{4, 5}
>>> c = {1, 2, 3}
>>> a.isdisjoint(c)
True
>>> d = {1, 2}
>>> d.issubset(c)
True
>>> e = {1, 2, 3, 4, 5}
>>> e.issuperset(c)
True
>>>
Yuxarıda sadalanan metodlardan, çoxluqlarda dəyişikliyə gətirib çıxaranlardan başqa, digərləri frozenset tipinə də tətbiq edilə bilər.


