Opi Python Set/Frozenset -tietorakenne – Osa 4


Tässä Python Data Structure -sarjan osassa 4 keskustelemme siitä, mikä on joukko, miten se eroaa muista Pythonin tietorakenteista, kuinka luodaan joukkoobjekteja, poistetaan joukkoobjekteja ja miten joukkoobjekteja käytetään. .

  • Joukkoobjekti on erillisten hajautusobjektien järjestämätön kokoelma.
  • Set poistaa automaattisesti päällekkäiset kohteet objektista.
  • Koska sarjaobjektit ovat järjestämättömiä, indeksointi- ja viipalointitoimintoja ei tueta.

Tällä hetkellä on olemassa kaksi sisäänrakennettua sarjatyyppiä.

  1. set – Koska se on muuttuva, sillä ei ole hash-arvoa eikä sitä voi käyttää sanakirjan avaimena tai toisen joukon elementtinä.
  2. jäädytetty – muuttumaton ja tiivistettävä – sen sisältöä ei voi muuttaa sen luomisen jälkeen. Sitä voidaan siksi käyttää sanakirjan avaimena tai toisen joukon elementtinä.

Rakenna joukkoobjekti

Luo joukko konstruktorimenetelmällä "set()" tai käyttämällä aaltosulkeet ja erottele elementit "{a,b,c}".

HUOMAA: et voi rakentaa asetettua objektia tyhjien aaltosulkeiden avulla, koska se luo sanakirjaobjektin.

Aseta menetelmät

Käytä sisäänrakennettua "dir()"-funktiota luetteloimaan käytettävissä olevat asetustavat ja attribuutit.

Lisää elementtejä asetettuun objektiin

Kuten jo todettiin, joukko on muuttuva tyyppi. Voit lisätä, poistaa tai päivittää asetettua objektia sen luomisen jälkeen.

Puhutaanpa kahdesta menetelmästä lisää ja päivitä.

  • add(elem) -menetelmä – Tämä menetelmä lisää yhden elementin joukkoon.
  • päivitys (*muut) -menetelmä – Tämä menetelmä lisää useita elementtejä asetettuun objektiin. Voit välittää muuttuvia/muuttumattomia objekteja argumenttina päivitysmenetelmässä.

HUOMAA: kaksoiskappaleet poistetaan automaattisesti.

Poista/tyhjennä elementit asetettuun objektiin

Kuten olet aiemmin nähnyt muissa tietorakenneaiheissa (luettelo, tuples, sanakirja), myös setissä voit käyttää sisäänrakennettua avainsanaa "del" poistaaksesi set-objektin nimiavaruudesta (esim. Muisti).

Alla on menetelmiä asettaa objektit elementtien poistamiseksi.

  • clear() – Tyhjentää kaikki elementit, jotka tekevät joukosta tyhjän. Tämä clear()-menetelmä on käytettävissä muissa tietorakenteissa, jotka tarjoavat saman toiminnon.
  • pop() – Poistaa mielivaltaiset elementit.
  • discard(elem) – Jos kohdetta ei löydy set-objektista, "discard()"-menetelmä ei aiheuta virhettä.
  • remove(elem) – Sama kuin "discard()"-menetelmä, mutta se aiheuttaa KeyError-ilmoituksen, kun kohdetta ei löydy.

Aseta toiminnot

Set tarjoaa menetelmiä matemaattisten operaatioiden, kuten leikkauspisteen, liitoksen, erotuksen ja symmetrisen eron suorittamiseen. Muistatko "Venn-kaavion" yläkoulupäiviltäsi?

Tarkastellaan alla olevia menetelmiä matemaattisten toimintojen suorittamiseen.

  • liitto
  • Risteys
  • intersection_update
  • symmetrinen_ero
  • symmetrinen_eropäivitys
  • ero
  • ero_päivitys
  • on epäyhtenäinen
  • on osajoukko
  • issuperset

Liitos, Intersectio, ero, symmetrinen_ero

  • liitto(*muu) – Palauta uusi joukko, joka sisältää elementtejä joukosta ja kaikista muista.
  • risteys(*other) – Palauta uusi joukko joukolle ja kaikille muille yhteisillä elementeillä.
  • ero(*muut) – Palauta uusi joukko, jossa on elementtejä, joita ei ole muissa.
  • symmetrinen_ero(other) – Palauta uusi joukko, jossa on elementtejä joko joukossa tai muussa, mutta ei molemmissa.

Intersection_Update

intersection_update(*others) – Päivitä joukko niin, että säilytät vain siitä löytyvät elementit ja kaikki muut.

Eron päivitys

difference_update(*others) – Päivitä joukko ja säilytä vain siitä ja kaikki muut elementit.

Symmetric_Difference_Update

symmetric_difference_update(other) – Päivitä joukko ja säilytä vain elementit, jotka löytyvät kummastakin joukosta, mutta ei kummastakaan.

Isdisjoint, Issubset, Issuperset

  • isdisjoint(other) – Palauta True jos joukossa ei ole yhteisiä elementtejä muiden kanssa. Joukot ovat erillisiä jos ja vain jos niiden risteyspiste on tyhjä joukko.
  • issubset() – Testaa, onko jokainen joukon elementti toisessa.
  • issuperset() – Testaa, onko jokainen elementti toisessa joukossa.

Copy()-menetelmä

Voit luoda identtisen kopion olemassa olevasta joukkoobjektista käyttämällä copy()-menetelmää. Tämä menetelmä on käytettävissä myös muille tietorakennetyypeille, kuten luettelo, sanakirja jne.

Poista asetettu objekti nimiavaruudesta käyttämällä sisäänrakennettua "del"-avainsanaa.

Jäädytetty setti

  • Frozen setti on muuttumaton tyyppi. Kun se on rakennettu, et voi lisätä, poistaa tai päivittää elementtejä luettelosta.
  • Jäädytetyt joukot, jotka ovat muuttumattomia, ovat hajautuskelpoisia, niitä voidaan käyttää "avaimena" sanakirjoille tai toisen joukkoobjektin elementeille.
  • Frozen set muodostetaan "frozenset()"-funktiolla.
  • Jäädytetty joukko tarjoaa samat menetelmät kuin "set", kuten union(), leikkaus, kopioi(), isdisjoint() jne.

Yhteenveto

Tässä artikkelissa olet nähnyt, mikä on asetettu, ero joukon ja jäädytetyn joukon välillä, kuinka luodaan ja käytetään joukkoelementtejä, asetusmenetelmiä jne.