logo

Kaip sukurti maišos rinkinį Python?

Kaip žinome, „HashSet“ yra garsi „Java“ klasė. HashSet naudojamas reikšmėms saugoti naudojant maišos lentelę. Šioje pamokoje apžvelgsime HashSet programoje Python. Taip pat sužinosime, kaip sukurti HashSet programoje Python.

„HashSet“ yra pagrindinė programavimo duomenų struktūra, dažniausiai randama tokiomis kalbomis kaip „Java“. Jis priklauso „Java Collections Framework“ ir yra nustatytos sąsajos įgyvendinimas. Išskirtinis HashSet bruožas yra jo gebėjimas saugoti elementus taip, kad būtų lengviau patikrinti, ar nėra konkrečių elementų, ir užtikrinamas rinkinio unikalumas. Skirtingai nuo struktūrų, tokių kaip sąrašai, HashSet nepalaiko jokios konkrečios savo elementų tvarkos.

Viena iš pagrindinių HashSet savybių yra jos unikalumo garantija; neleidžia dubliuoti elementų. Tokios operacijos, kaip elementų pridėjimas, pašalinimas ir tikrinimas, paprastai turi pastovų vidutinį našumą, todėl tai yra veiksmingas pasirinkimas tokioms užduotims atlikti. Tačiau svarbu atkreipti dėmesį, kad elementų tvarka HashSet negarantuojama.

Pagrindinės charakteristikos:

Unikalumas: HashSet neleidžia pasikartojančių elementų. Jis naudoja „ equals ()“ metodą, kad patikrintų, ar nėra dublikatų, užtikrinant, kad kiekvienas rinkinio elementas būtų unikalus.

Nėra užsakymo: HashSet elementai nėra saugomi jokia tam tikra tvarka. Jei reikia išlaikyti elementų tvarką, galite apsvarstyti galimybę naudoti LinkedHashSet, kuris palaiko įterpimo tvarką.

Pagrindinė duomenų struktūra: Viduje HashSet elementams saugoti naudoja maišos lentelę. Tai leidžia atlikti pastovų vidutinį pagrindinių operacijų, pvz., pridėjimo, pašalinimo ir įtraukimo, sudėtingumą.

simbolis į eilutę java

Nuliniai elementai: HashSet leidžia vieną nulinį elementą. Jei bandysite pridėti pasikartojantį nulinį elementą, jis pakeis esamą.

Įvadas

Mes galime sukurti „HashSet“ nenaudodami jokių maišos lentelių bibliotekų. Žemiau pateikiamos kelios skirtingos funkcijos -

java konvertuoti eilutę į int

pridėti (x) - Add(x) metodas daugiausia naudojamas įterpiant x reikšmę į HashSet.

yra (x) - Metodas include(x) daugiausia naudojamas patikrinti, ar reikšmė x yra HashSet, ar ne.

pašalinti (x) - Pašalinimo (x) metodas daugiausia naudojamas x ištrinti iš HashSet. Jei HashSet neturi jokios vertės, jis nieko nedarys.

Supraskime šiuos metodus žemiau pateiktu pavyzdžiu.

Pirmiausia inicijuokite HashSet ir iškvieskite add(1) funkciją. Jis pridės 1 į maišos rinkinį. Skambinkite add(3), kuris pridės 3, tada skambinkite yra(1). Jis patikrins, ar maišos rinkinyje yra 1, ar ne. Dabar kviečiame įtraukti (2), pridėti (2), įtraukti (2), pašalinti (2), įtraukti (2).

Išvestis bus grąžinta kaip teisinga, jei yra 1, klaidinga, jei 2 nėra, teisinga, jei 2 yra, klaidinga, jei 2 nėra.

Pagrindinės HashSet operacijos Python

Kai kurias pagrindines HashSet operacijas galime atlikti naudodami šiuos metodus. Supraskime šiuos metodus.

Naujų reikšmių įtraukimas į HashSet

Žemiau pateiktame pavyzdyje mes pridėsime vertę maišos rinkinyje naudodami funkciją add(). Funkcija add() prideda vertę po vieną. Pažiūrėkime toliau pateiktą kodą.

Pavyzdys -

 from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) 

Išvestis:

prijunkite java duomenų bazę
 Adding value: 2 Adding value: 7 Adding value: 6 

Vertės pašalinamos iš HashSet

Esamą reikšmę galime pašalinti naudodami funkciją remove(). Supraskime šį kodą.

Pavyzdys -

 from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.remove(7) obj.remove(6) 

Išvestis:

 Adding value: 2 Adding value: 7 Adding value: 6 Removed value: 7 Removed value: 6 

Tikrinama, ar „HashSet“ yra reikšmės

Šiame pavyzdyje parodysime, kaip galime patikrinti, ar tam tikra reikšmė egzistuoja, ar nenaudoja yra () funkcija. Supraskime šį kodą.

Pavyzdys -

 from hs import HashSet obj = HashSet() obj.add(2) obj.add(7) obj.add(6) obj.contains(2) 

Išvestis:

aštrus kampas
 Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2 

HashSet algoritmas Python

Pirmajame etape apibrėžiame vieną duomenų struktūrą, vadinamą HashList. Tada inicijuojame tuščią sąrašą kaip naujas_sąrašas . Tada apibrėžiame funkciją update(), kurioje found išsaugos Būlio reikšmę False. Dabar mes naudojame for ciklus kiekvienam indeksui I ir K. Jei raktas yra toks pat kaip 'k', tada naujas_sąrašas[i]=k ir nustatė vertę True. Reikšmė bus įterpta paskutinėje sąrašo dalyje, jei reikšmės nerasta.

Kitas žingsnis yra apibrėžti funkciją get(), kurią naudosime ciklei, ir jei k reikšmė yra tokia pati kaip rakto, išvestis bus True; kitu atveju, klaidinga. Jei raktas yra toks pat kaip „k“, ištrinkite reikšmę iš sąrašo naujas_sąrašas. Tas pats procesas bus taikomas ir funkcijai pašalinti ().

Dabar sukursime pagrindinę klasę HashSet. Ši klasė deklaruos inicijavimo funkciją, kur key_space reikšmė = 2096. Hash_table turės naujo_sąrašo dydžio objektų sąrašą. key_space . Tada sukursime funkciją add(), kurioje hash_key = key%key_space ir atnaujinkite hash_table[hash_key] raktą. Po to mes paskambinsime į pašalinti funkciją , kuriame hash_key = raktas % key_space, ir ištrinkite hash_table[hash_key] raktą. Po to mes paskambinsime į yra funkcija , kuriame

hash_key = raktas % key_space ir gaukite hash_table[hash_key] raktą.

java enums

Pažiūrėkime laipsniško įgyvendinimo algoritmą.

Algoritmas -

  • Sukurkite duomenų struktūrą pavadinimu HashSet, inicijuokite ją, kaip nurodyta toliau
  • new_list = []
  • Apibrėžkite funkcijos atnaujinimą (). Tam reikės rakto
  • rasta := Netiesa
  • kiekvienam indeksui i ir raktui k naujajame_sąraše, do
    • jei raktas yra toks pat kaip k, tada
      • new_list[i]:= raktas
      • rasta:= Tiesa
      • išeiti iš kilpos
    • jei rasta klaidinga, tada
      • įterpti raktą new_list pabaigoje
  • Apibrėžkite funkciją get() . Tam reikės rakto
    • už kiekvieną k naujajame_sąraše darykite
      • jei k yra toks pat kaip raktas, tada
        • grąžinti Tiesa
      • grąžinti Netiesa
  • Apibrėžkite funkciją remove(). Tam reikės rakto
    • kiekvienam indeksui i ir raktui k naujajame_sąraše, do
      • jei raktas yra toks pat kaip k, tada
        • ištrinti naują_sąrašą[i]
  • Dabar sukurkite pasirinktinį hashSet. Bus keli toliau nurodyti metodai
  • Inicijuokite tai taip -
  • key_space := 2096
  • hash_table:= segmento tipo objektų, kurių dydis yra key_space, sąrašas
  • Apibrėžkite funkciją add(). Tam reikės rakto
    • hash_key:= raktas mod key_space
    • iškvieskite hash_table[hash_key] atnaujinimą (key)
  • Apibrėžkite funkciją remove(). Tam reikės rakto
    • hash_key:= keymodkey_space
    • trynimo raktas iš hash_table[hash_key]
  • Apibrėžkite funkciją include(). Tam reikės rakto
    • hash_key:= keymodkey_space
    • grąžinti get(key) of hash_table[hash_key]

HashSet įdiegimas Python

Čia įdiegsime aukščiau pateiktą algoritmą ir sukursime Python programą. Apibrėžsime dvi klases: HashSet ir CreateHashset. Pažiūrėkime žemiau esantį kodą.

Kodas -

 # Here, we are Designing the HashSet in python # Here, we are checking the values and will return the output class class verifyvalues: # Here, we are initialization function which has list new_list def __init__(self): self.new_list=[] # Here, we have the function to update values def update(self, key): found=False for i,k in enumerate(self.new_list): if key==k: self.new_list[i]=key found=True break if not found: self.new_list.append(key) # Here, we have function to get values def get(self, key): for k in self.new_list: if k==key: return True return False # Here, we have function to remove values def remove(self, key): for i,k in enumerate(self.new_list): if key==k: del self.new_list[i] # Here, we have defined a class as HashSet class HashSet: # Here, we have defined an Initialization function def __init__(self): self.key_space = 2096 self.hash_table=[verifyvalues() for i in range(self.key_space)] def hash_values(self, key): hash_key=key%self.key_space return hash_key # Here, we have also defined an add function def add(self, key): self.hash_table[self.hash_values(key)].update(key) # Here, we have also defined a remove function def remove(self, key): self.hash_table[self.hash_values(key)].remove(key) # Here, we have defined the contains function def contains(self, key): return self.hash_table[self.hash_values(key)].get(key) def display(self): ls=[] for i in self.hash_table: if len(i.new_list)!=0:ls.append(i.new_list[0]) print(ls) ob = HashSet() print(ob.hash_values(10)) print('Add 10') ob.add(10) print(ob.hash_values(6)) print('Add 6 ') ob.add(6) print(ob.hash_values(5)) print('Add 5 ') ob.add(5) print('Contains 10 : ',ob.contains(10)) print('Contains 3: ',ob.contains(3)) print('Contains 8 : ',ob.contains(9)) 

Išvestis:

 10 Add 10 6 Add 6 5 Add 5 Contains 10 : True Contains 3: False Contains 8 : False 2 Add 2 3 Add 3 Contains 2 : True Remove 2 Contains 2 : False Contains 3 : True [3, 5, 6, 10] 

Paaiškinimas:

    verifyvalues ​​klasė:Šioje klasėje nagrinėjamas reikšmių sąrašas (new_list) ir pateikiami metodai, kaip atnaujinti, patikrinti, ar nėra, ir pašalinti vertes.__init__ technika:Kiekvienai progai pristatomas laisvas aprašymas.atnaujinimo technika:Atnaujina esamą vertę arba prideda kitą vertę prie išvados.gauti techniką:Patikrina, ar išsekusiame sąraše yra vertės.pašalinti strategiją:Pašalina iš anksto apibrėžtą pagarbą.HashSet klasė:Tai yra pagrindinis HashSet vykdymas.__init__ technika:Pristato HashSet su iš anksto nustatyta raktų erdve ir sukuria verifyvalues ​​pavyzdžių grupę (hash_table), kad būtų galima pasirūpinti poveikiu.hash_values ​​technika:Naudodamas modulo veiklą, nustato duoto informacijos rakto maišos raktą.pridėti strategiją:Prideda raktą prie HashSet, atnaujindamas palyginimo verifyvalues ​​objektą hash_table.pašalinti techniką:Pašalina raktą iš HashSet.yra strategija:Patikrina, ar HashSet yra gyvybiškai svarbi informacija.šou technika:Spausdina pagrindinį kiekvieno nenutrūkstamo tikrinimo verčių sąrašo komponentą, pateikdamas informacijos cirkuliacijos vaizdą.Naudojimo pavyzdys:Kodas parodo „HashSet“ naudojimą pridedant raktus (10, 6, 5), tikrinant, ar nėra, ir rodant kai kuriuos duomenis apie vidinę būseną.