Un set în programarea Python este un tip de date de colecție neordonat care este iterabil, mutabil și nu are elemente duplicat.
Setul este reprezentat de { } (valorile cuprinse între acolade)
Avantajul major al folosirii unui set, spre deosebire de a listă , este că are o metodă foarte optimizată pentru a verifica dacă un anumit element este conținut în set. Aceasta se bazează pe o structură de date cunoscută sub numele de tabel hash. Deoarece seturile sunt neordonate, nu putem accesa elementele folosind indecși așa cum facem în liste.
Exemplu de seturi Python
Python3
var> => {> 'Geeks'> ,> 'for'> ,> 'Geeks'> }> type> (var)> |
>
>
Ieșire:
livecricket.este
set>
Complexitatea timpului: O(1)
Spațiu auxiliar: O(1)
Introduceți metoda Casting with Python Set
Metoda Python set() este folosită pentru turnarea tipului.
Python3
# typecasting list to set> myset> => set> ([> 'a'> ,> 'b'> ,> 'c'> ])> print> (myset)> # Adding element to the set> myset.add(> 'd'> )> print> (myset)> |
>
>
Ieșire:
Setul Python este un tip de date neordonat, ceea ce înseamnă că nu putem ști în ce ordine sunt stocate elementele setului.
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}>
Complexitatea timpului: O(n)
Spațiu auxiliar: O(n)
Verificați unic și Imuabil cu Python Set
Seturile Python nu pot avea o valoare duplicată și, odată ce este creat, nu îi putem modifica valoarea.
Python3
# Python program to demonstrate that> # a set cannot have duplicate values> # and we cannot change its items> # a set cannot have duplicate values> myset> => {> 'Geeks'> ,> 'for'> ,> 'Geeks'> }> print> (myset)> # values of a set cannot be changed> myset[> 1> ]> => 'Hello'> print> (myset)> |
>
>
Ieșire:
Primul cod explică faptul că setul nu poate avea o valoare duplicată. Fiecare articol din el este o valoare unică.
Al doilea cod generează o eroare deoarece nu putem aloca sau modifica o valoare odată ce setul este creat. Putem adăuga sau șterge doar elemente din set.
{'Geeks', 'for'} TypeError: 'set' object does not support item assignment>
Element eterogen cu set Python
Seturile Python pot stoca elemente eterogene în el, adică un set poate stoca un amestec de tipuri de date șir, întregi, boolean etc.
Python3
state unite cate orase
# Python example demonstrate that a set> # can store heterogeneous elements> myset> => {> 'Geeks'> ,> 'for'> ,> 10> ,> 52.7> ,> True> }> print> (myset)> |
>
>
Ieșire:
{True, 10, 'Geeks', 52.7, 'for'}>
Complexitatea timpului: O(n)
Spațiu auxiliar: O(n)
Seturi Python Frozen
Seturi congelate în Python sunt obiecte imuabile care acceptă doar metode și operatori care produc un rezultat fără a afecta setul sau seturile înghețate la care sunt aplicate. Se poate face cu metoda frozenset() în Python.
În timp ce elementele unui set pot fi modificate în orice moment, elementele setului înghețat rămân aceleași după creare.
Dacă nu sunt transmise parametri, returnează un set înghețat gol.
Piton
# Python program to demonstrate differences> # between normal and frozen set> # Same as {'a', 'b','c'}> normal_set> => set> ([> 'a'> ,> 'b'> ,> 'c'> ])> print> (> 'Normal Set'> )> print> (normal_set)> # A frozen set> frozen_set> => frozenset> ([> 'e'> ,> 'f'> ,> 'g'> ])> print> (> '
Frozen Set'> )> print> (frozen_set)> # Uncommenting below line would cause error as> # we are trying to add element to a frozen set> # frozen_set.add('h')> |
>
>
Ieșire:
Normal Set {'a', 'c', 'b'} Frozen Set {'e', 'g', 'f'}>
Complexitatea timpului: O(n)
Spațiu auxiliar: O(n)
Funcționarea internă a Set
Aceasta se bazează pe o structură de date cunoscută sub numele de tabel hash. Dacă mai multe valori sunt prezente la aceeași poziție de index, atunci valoarea este atașată la acea poziție de index, pentru a forma o listă legată.
În, seturile Python sunt implementate folosind un dicționar cu variabile fictive, în care membrii le stabilesc cu optimizări mai mari la complexitatea timpului.
Set de implementare:

Seturi cu numeroase operații pe un singur HashTable:

Metode pentru seturi
Adăugarea de elemente la seturile Python
Inserarea in set se face prin intermediul set.add( ), în care este creată o valoare de înregistrare adecvată pentru a fi stocată în tabelul hash. La fel ca și verificarea unui articol, adică O(1) în medie. Cu toate acestea, în cel mai rău caz poate deveni Pe) .
Python3
Formatator de date simplu în java
# A Python program to> # demonstrate adding elements> # in a set> # Creating a Set> people> => {> 'Jay'> ,> 'Idrish'> ,> 'Archi'> }> print> (> 'People:'> , end> => ' '> )> print> (people)> # This will add Daxit> # in the set> people.add(> 'Daxit'> )> # Adding elements to the> # set using iterator> for> i> in> range> (> 1> ,> 6> ):> > people.add(i)> print> (> '
Set after adding element:'> , end> => ' '> )> print> (people)> |
>
>
Ieșire:
People: {'Idrish', 'Archi', 'Jay'} Set after adding element: {1, 2, 3, 4, 5, 'Idrish', 'Archi', 'Jay', 'Daxit'}>
Complexitatea timpului: O(n)
Spațiu auxiliar: O(n)
Operație de unire pe seturi Python
Două seturi pot fi îmbinate folosind funcția union() sau | operator. Ambele valori Hash Table sunt accesate și parcurse cu operația de îmbinare efectuată asupra lor pentru a combina elementele, în același timp, duplicatele sunt eliminate. Complexitatea timpului este O(len(s1) + len(s2)) unde s1 și s2 sunt două mulțimi a căror unire trebuie făcută.
Python3
# Python Program to> # demonstrate union of> # two sets> people> => {> 'Jay'> ,> 'Idrish'> ,> 'Archil'> }> vampires> => {> 'Karan'> ,> 'Arjun'> }> dracula> => {> 'Deepanshu'> ,> 'Raju'> }> # Union using union()> # function> population> => people.union(vampires)> print> (> 'Union using union() function'> )> print> (population)> # Union using '|'> # operator> population> => people|dracula> print> (> '
Union using '|' operator'> )> print> (population)> |
>
>
Ieșire:
Union using union() function {'Karan', 'Idrish', 'Jay', 'Arjun', 'Archil'} Union using '|' operator {'Deepanshu', 'Idrish', 'Jay', 'Raju', 'Archil'}>
Complexitatea timpului: O(n)
Spațiu auxiliar: O(n)
verificați nul în java
Operație de intersecție pe seturi Python
Acest lucru se poate face prin operatorul intersection() sau &. Elementele comune sunt selectate. Ele sunt similare cu iterația peste listele Hash și combină aceleași valori în ambele tabel. Timpul Complexitatea acestuia este O(min(len(s1), len(s2)) unde s1 și s2 sunt două mulțimi a căror unire trebuie făcută.
Python3
# Python program to> # demonstrate intersection> # of two sets> set1> => set> ()> set2> => set> ()> for> i> in> range> (> 5> ):> > set1.add(i)> for> i> in> range> (> 3> ,> 9> ):> > set2.add(i)> # Intersection using> # intersection() function> set3> => set1.intersection(set2)> print> (> 'Intersection using intersection() function'> )> print> (set3)> # Intersection using> # '&' operator> set3> => set1 & set2> print> (> '
Intersection using '&' operator'> )> print> (set3)> |
>
>
Ieșire:
Intersection using intersection() function {3, 4} Intersection using '&' operator {3, 4}>
Complexitatea timpului: O(n)
Spațiu auxiliar: O(n)
Găsirea diferențelor de seturi în Python
Pentru a găsi diferențe între seturi. Similar cu găsirea diferențelor în lista legată. Acest lucru se realizează prin operatorul difference() sau –. Complexitatea temporală a găsirii diferenței s1 – s2 este O(len(s1))
Python3
java bool la șir
# Python program to> # demonstrate difference> # of two sets> set1> => set> ()> set2> => set> ()> for> i> in> range> (> 5> ):> > set1.add(i)> for> i> in> range> (> 3> ,> 9> ):> > set2.add(i)> # Difference of two sets> # using difference() function> set3> => set1.difference(set2)> print> (> ' Difference of two sets using difference() function'> )> print> (set3)> # Difference of two sets> # using '-' operator> set3> => set1> -> set2> print> (> '
Difference of two sets using '-' operator'> )> print> (set3)> |
>
>
Ieșire:
Difference of two sets using difference() function {0, 1, 2} Difference of two sets using '-' operator {0, 1, 2}>
Complexitatea timpului: O(n)
Spațiu auxiliar: O(n)
Ștergerea seturilor Python
Metoda Set Clear() golește întregul set în loc.
Python3
# Python program to> # demonstrate clearing> # of set> set1> => {> 1> ,> 2> ,> 3> ,> 4> ,> 5> ,> 6> }> print> (> 'Initial set'> )> print> (set1)> # This method will remove> # all the elements of the set> set1.clear()> print> (> '
Set after using clear() function'> )> print> (set1)> |
>
>
Ieșire:
Initial set {1, 2, 3, 4, 5, 6} Set after using clear() function set()>
Complexitatea timpului: O(n)
Spațiu auxiliar: O(n)
Cu toate acestea, există două capcane majore în seturile Python:
- Setul nu menține elemente într-o anumită ordine.
- Doar instanțe de tipuri imuabile pot fi adăugate la un set Python.
Complexitatea temporală a seturilor
Operațiune | Caz mediu | Cel mai rău caz | note |
---|---|---|---|
x în s | O(1) | Pe) | |
Union s|t | O(len(s)+len(t)) | ||
Intersecție s&t | O(min(len(s), len(t))) | O(len(s) * len(t)) | înlocuiți min cu max dacă t nu este un set |
Intersecție multiplă s1&s2&...&sn | (n-1)*O(l) unde l este max(len(s1),...,len(sn)) | ||
Diferența s-t | O(doar(e)) |
Operatori pentru seturi
Seturile și seturile înghețate acceptă următorii operatori:
Operatori | Note |
---|---|
cheie în s | controlul de izolare |
cheie nu în s | verificare de necontenire |
s1 == s2 | s1 este echivalent cu s2 |
s1 != s2 | s1 nu este echivalent cu s2 |
s1 <= s2 | s1 este submulțimea lui s2 |
s1 | s1 este submultul propriu al lui s2 |
s1>= s2 | s1 este supersetul lui s2 |
s1> s2 | s1 este superset propriu al lui s2 |
s1 | s2 | unirea lui s1 și s2 |
s1 și s2 | intersecția lui s1 și s2 |
s1 – s2 | multimea elementelor din s1 dar nu s2 |
s1 ˆ s2 | mulţimea elementelor în tocmai unul dintre s1 sau s2 |
Articole recente despre Python Set.