logo

Kuinka suunnitella Hashset Pythonissa?

Kuten tiedämme, HashSet on kuuluisa Java-luokka. HashSetiä käytetään arvojen tallentamiseen hash-taulukon avulla. Tässä opetusohjelmassa käsittelemme HashSetiä Pythonissa. Opimme myös kuinka voimme suunnitella HashSetin Pythonissa.

HashSet on ohjelmoinnin perustietorakenne, joka löytyy yleisesti kielistä, kuten Java. Se kuuluu Java Collections Frameworkiin ja toimii määritetyn käyttöliittymän toteutuksena. HashSetin erottuva piirre on sen kyky tallentaa elementtejä tavalla, joka helpottaa tiettyjen elementtien olemassaolon tehokasta tarkistamista ja varmistaa joukon ainutlaatuisuuden. Toisin kuin rakenteet, kuten luettelot, HashSet ei ylläpidä mitään tiettyä järjestystä elementtien välillä.

Yksi HashSetin tärkeimmistä ominaisuuksista on sen ainutlaatuisuuden takuu; se ei salli päällekkäisiä elementtejä. Toiminnot, kuten elementtien lisääminen, poistaminen ja olemassaolon tarkistaminen, toimivat yleensä vakioaikaisesti, joten se on tehokas valinta tällaisiin tehtäviin. On kuitenkin tärkeää huomata, että HashSetin elementtien järjestystä ei taata.

Tärkeimmät ominaisuudet:

Ainutlaatuisuus: HashSet ei salli päällekkäisiä elementtejä. Se käyttää equals()-menetelmää kaksoiskappaleiden tarkistamiseen ja varmistaa, että joukon jokainen elementti on ainutlaatuinen.

Ei tilausta: HashSetin elementtejä ei tallenneta missään tietyssä järjestyksessä. Jos sinun on säilytettävä elementtien järjestys, voit harkita LinkedHashSetin käyttöä, joka ylläpitää lisäysjärjestystä.

Taustalla oleva tietorakenne: Sisäisesti HashSet käyttää tiivistetaulukkoa elementtien tallentamiseen. Tämä mahdollistaa vakioaikaisen keskimääräisen monimutkaisuuden perustoimintoihin, kuten lisäämiseen, poistamiseen ja sisällyttämiseen.

Nollaelementit: HashSet sallii yhden nollaelementin. Jos yrität lisätä päällekkäisen nollaelementin, se korvaa olemassa olevan elementin.

Johdanto

Voimme suunnitella HashSetin ilman hash-taulukkokirjastoja. Alla on useita eri toimintoja -

lisää (x) - Add(x)-menetelmää käytetään pääasiassa arvon x lisäämiseen HashSetiin.

sisältää (x) - Sisältää(x)-menetelmää käytetään pääasiassa tarkistamaan, onko arvo x läsnä HashSetissä vai ei.

poista (x) - Remove(x)-menetelmää käytetään pääasiassa x:n poistamiseen HashSetistä. Jos HashSetillä ei ole arvoa, se ei tee mitään.

Ymmärretään nämä menetelmät alla olevan esimerkin avulla.

Alusta ensin HashSet ja kutsu add(1)-funktio. Se lisää 1:n hash-joukkoon. Kutsu add(3), joka lisää luvun 3, sitten kutsu sisältää(1). Se tarkistaa, onko 1 läsnä vai ei hash-joukossa. Nyt kutsumme sisältää(2), lisää(2), sisältää(2), poista(2), sisältää(2).

Tulos palautetaan tosi, jos 1 on läsnä, epätosi, jos 2 ei ole, tosi, jos 2 on läsnä, epätosi, jos 2 ei ole.

HashSetin perustoiminnot Pythonissa

Voimme suorittaa joitain perustoimintoja HashSetissä seuraavilla menetelmillä. Ymmärretään nämä menetelmät.

Uusien arvojen lisääminen HashSetissä

Alla olevassa esimerkissä lisäämme arvon hash-joukkoon käyttämällä add()-funktiota. Add()-funktio lisää arvon yksi kerrallaan. Katsotaanpa seuraava koodi.

Esimerkki -

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

Lähtö:

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

Arvojen poistaminen HashSetistä

Voimme poistaa olemassa olevan arvon käyttämällä remove()-funktiota. Ymmärretään seuraava koodi.

Esimerkki -

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

Lähtö:

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

Tarkistetaan, onko HashSetissä arvoja

Tässä esimerkissä näytämme, kuinka voimme tarkistaa, onko tietty arvo olemassa vai ei käytä sisältää() toiminto. Ymmärretään seuraava koodi.

Esimerkki -

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

Lähtö:

 Adding value: 2 Adding value: 7 Adding value: 6 It contains: 2 

Algoritmi HashSetille Pythonissa

Ensimmäisessä vaiheessa määritämme yhden tietorakenteen nimeltä HashList. Sitten alustamme tyhjän luettelon nimellä uusi_luettelo . Sitten määritämme update()-funktion, johon found tallentaa Boolen arvon False. Nyt käytämme silmukkaa jokaiselle indeksille I ja K. jos avain on sama kuin 'k', niin uusi_luettelo[i]=k ja löytyi arvoksi True. Arvo lisätään luettelon viimeiseen kohtaan, jos arvoa ei löydy.

Seuraava askel on määrittää get()-funktio, jota käytämme silmukassa, ja jos k:n arvo on sama kuin avain, tulos on True; muuten, Väärä. Jos avain on sama kuin 'k', poista arvo luettelosta new_list. Samaa prosessia käytetään poista()-funktiossa.

Nyt luomme pääluokan HashSetin. Tämä luokka ilmoittaa alustusfunktion, jossa avainvälin arvo = 2096. Hash_table-taulukossa on luettelo new_list-tyyppisistä objekteista, joiden koko on key_space . Sitten luomme add()-funktion, jossa hash_key = avain%key_space ja päivitä hash_table[hash_key] avain. Sen jälkeen soitamme n poista toiminto , jossa hash_avain = avain % avainväli, ja poista hash_table[hash_key] avain. Sen jälkeen soitamme n sisältää toiminnon , jossa

hash_avain = avain % avainvälilyönti, ja hanki avain hash_table[hash_key].

javascriptin globaali muuttuja

Katsotaan vaiheittainen toteutusalgoritmi.

Algoritmi -

  • Luo tietorakenne nimeltä HashSet, alusta se kuten alla
  • new_list = []
  • Määritä funktiopäivitys(). Tämä vie avaimen
  • löytyi := Väärin
  • Tee jokaiselle indeksille i ja näppäimelle k in new_list
    • jos avain on sama kuin k, niin
      • new_list[i]:= avain
      • löytyi:= Totta
      • tulla ulos silmukasta
    • jos todetaan vääräksi, niin
      • Lisää avain new_list-luettelon loppuun
  • Määritä funktio get() . Tämä vie avaimen
    • tee jokaiselle new_list-luettelon k:lle
      • jos k on sama kuin avain, niin
        • palauta Totta
      • palauttaa False
  • Määritä funktio remove(). Tämä vie avaimen
    • Tee jokaiselle indeksille i ja näppäimelle k in new_list
      • jos avain on sama kuin k, niin
        • poista uusi_lista[i]
  • Luo nyt mukautettu hashSet. Seuraavat menetelmät ovat muutamia
  • Alusta tämä seuraavasti -
  • avainväli := 2096
  • hash_table:= luettelo ämpärityyppisistä objekteista, joiden koko on key_space
  • Määritä funktio add(). Tämä vie avaimen
    • hash_key:= avain mod key_space
    • soita hash_table[hash_key] päivitys(avain)
  • Määritä funktio remove(). Tämä vie avaimen
    • hash_key:= keymodkey_space
    • poista avain hash_taulukosta[hash_key]
  • Määritä funktio include(). Tämä vie avaimen
    • hash_key:= keymodkey_space
    • palauttaa get(avain) hash_table[hash_key]

HashSetin käyttöönotto Pythonissa

Täällä toteutamme yllä olevan algoritmin ja luomme Python-ohjelman. Määrittelemme kaksi luokkaa: HashSet ja CreateHashset. Katsotaanpa alla olevaa koodia.

Koodi -

 # 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)) 

Lähtö:

 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] 

Selitys:

    verifyvalues-luokka:Tämä luokka käsittelee arvojen yhteenvetoa (new_list) ja antaa tekniikoita arvojen päivittämiseen, läsnäolon tarkistamiseen ja poistamiseen.__init__ tekniikka:Esittelee tyhjennyksen jokaiseen tilaisuuteen.päivitystekniikka:Päivittää nykyisen arvon tai liittää yhteenvetoon toisen arvon.hanki tekniikka:Tarkistaa, että arvo on olemassa lopputuloksesta.poista strategia:Poistaa ennalta määritellyn arvostuksen lopputuloksesta.HashSet-luokka:Tämä on HashSetin ensisijainen suoritus.__init__ tekniikka:Esittelee HashSetin ennalta määritetyllä avainavaruudella ja tekee klusterin (hash_table) verifyvalues-esimerkkejä vaikutusten hoitamista varten.hash_values ​​-tekniikka:Määrittää tiivisteavaimen tietylle tietoavaimelle modulo-toimintoa käyttämällä.Lisää strategia:Lisää avaimen HashSetiin päivittämällä verifyvalues ​​-objektin hash_taulukossa.poista tekniikka:Poistaa avaimen HashSetistä.sisältää strategian:Tarkistaa, onko HashSetissä elintärkeää.näytä tekniikka:Tulostaa jokaisen ei-tyhjä verifyvalues ​​-luettelon pääkomponentin ja tarjoaa kuvan tiedon kierrosta.Käyttöesimerkki:Koodi näyttää HashSetin käytön lisäämällä avaimia (10, 6, 5), tarkistamalla läsnäolon ja näyttämällä tietoja sisäisestä tilasta.