logo

Se setează în Python

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 în Python - Funcționare internă

Seturi cu numeroase operații pe un singur HashTable:

Seturi în Python - Tabel Hash

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:

  1. Setul nu menține elemente într-o anumită ordine.
  2. 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.