Ismerje meg a Python Set/Frozenset adatstruktúrát – 4. rész
A Python Data Structure sorozat ebben a 4. részében megvitatjuk, mi az a halmaz, miben különbözik a python más adatstruktúráitól, hogyan hozhatunk létre halmazobjektumokat, hogyan törölhetünk halmazobjektumokat és hogyan lehet a halmazobjektumok módszereit. .
- A beállított objektum különálló kivonatoló objektumok rendezetlen gyűjteménye.
- A Beállítás automatikusan eltávolítja az ismétlődő elemeket az objektumról.
- Mivel a beállított objektumok rendezetlenek, nem támogatott az indexelés és a szeletelés.
Jelenleg két beépített készlettípus létezik.
- készlet – Mivel változtatható, nincs hash értéke, és nem használható sem szótári kulcsként, sem másik halmaz elemeként.
- fagyasztott – Megváltozhatatlan és kivonatozható – a tartalma létrehozása után nem módosítható; ezért szótárkulcsként vagy egy másik halmaz elemeként is használható.
Objektumkészlet létrehozása
Hozzon létre egy halmazt a „set()” konstruktor metódusával vagy kapcsos kapcsos zárójelekkel, amelyek vesszővel választják el az „{a,b,c}” elemeket.
MEGJEGYZÉS: nem hozhat létre beállított objektumot üres kapcsos zárójelekkel, mivel az szótárobjektumot hoz létre.
Módszerek beállítása
Használja a beépített "dir()" függvényt az elérhető metódusok és attribútumok felsorolásához.
Adjon hozzá elemeket az objektumkészlethez
Mint már említettük, a set egy változó típus. A beállított objektum létrehozása után hozzáadható, törölhető, frissíthető.
Beszéljünk két beállított módszerről: hozzáadás és frissítés.
- add(elem) metódus – Ez a metódus egyetlen elemet ad hozzá egy beállított objektumhoz.
- update(*others) metódus – Ez a módszer több elemet ad egy beállított objektumhoz. A módosítható/megváltoztathatatlan objektumokat argumentumként adhatja át a frissítési metódusban.
MEGJEGYZÉS: A másolatok automatikusan eltávolításra kerülnek.
Elemek eltávolítása/törlése egy beállított objektumból
Amint azt korábban más adatszerkezeti témakörökben (lista, sorok, szótár) láthatta, a set esetében is használhatja a beépített "del" kulcsszót, hogy törölje a beállított objektumot a névtérből (pl. Memóriat).
Az alábbiakban bemutatjuk az objektumok beállításának módszereit az elemek eltávolítására.
- clear() – Törli az összes elemet, amely üressé teszi a készletet. Ez a clear() módszer más adatstruktúrákban is elérhető, amelyek ugyanazt a funkciót biztosítják.
- pop() – Tetszőleges elemek eltávolítása.
- discard(elem) – Ha az elem nem található a beállított objektumban, akkor a „discard()” metódus nem okoz hibát.
- remove(elem) – Ugyanaz, mint a „discard()” metódus, de a KeyError-t emeli ki, ha egy elem nem található.
Műveletek beállítása
A Set módszereket biztosít matematikai műveletek, például metszéspont, egyesülés, különbség és szimmetrikus különbség végrehajtásához. Emlékszel a „Venn-diagramra” középiskolai éveidből?
Az alábbiakban megvizsgáljuk a matematikai műveletek végrehajtásának módszereit.
- unió
- útkereszteződés
- intersection_update
- szimmetrikus_különbség
- szimmetrikus_különbség_frissítés
- különbség
- differencia_frissítés
- diszjunkt
- részhalmaza
- issuperset
Unió, metszéspont, különbség, szimmetrikus_különbség
- union(*other) – Új készlet visszaadása a készlet elemeivel és az összes többi elemmel.
- metszéspont(*egyéb) – Új halmaz visszaadása a halmazban és az összes többiben közös elemekkel.
- különbség(*egyéb) – Egy új halmaz visszaadása olyan elemekkel a halmazban, amelyek nem szerepelnek a többiben.
- symmetric_difference(other) – Új halmazt ad vissza, amelynek elemei vagy a halmazban, vagy a többiben, de mindkettőben nem.
Intersection_Update
intersection_update(*others) – Frissítse a készletet úgy, hogy csak a benne található elemeket és az összes többi elemet tartsa meg.
Különbség frissítése
difference_update(*others) – Frissítse a készletet, és csak a benne található elemeket és az összes többit megtartja.
Symmetric_Difference_Update
symmetric_difference_update(other) – Frissítse a készletet, és csak az egyik készletben található elemeket tartsa meg, de nem mindkettőben.
Isdisjoint, Issubset, Issuperset
- isdisjoint(other) – Igaz értéket ad vissza, ha a készletnek nincs egyéb közös eleme. A halmazok akkor és csak akkor diszjunktak, ha metszéspontjuk az üres halmaz.
- issubset() – – Tesztelje, hogy a készlet minden eleme van-e másikban.
- issuperset() – – – Tesztelje, hogy a másik minden eleme benne van-e a készletben.
Copy() módszer
A copy() metódus használatával létrehozhat egy azonos másolatot a meglévő halmazobjektumról. Ez a módszer más adatszerkezet-típusokhoz is elérhető, például lista, szótár stb.
Törölje a beállított objektumot a névtérből egy beépített „del” kulcsszó használatával.
Fagyasztott készlet
- A fagyasztott készlet változatlan típusú. A felépítés után nem vehet fel, nem távolíthat el vagy frissíthet elemeket a listából.
- A változtathatatlan rögzített halmazok kivonatolhatók, használhatók „kulcsként” a szótárak vagy egy másik halmazobjektum elemei számára.
- A Frozen set a “frozenset()” függvény segítségével készül.
- A befagyasztott halmaz ugyanazt a metóduskészletet kínálja a „készlethez” képest, mint az union(), metszéspont, copy(), isdisjoint() stb.
Összegzés
Ebben a cikkben láthatta, hogy mi van beállítva, különbség a halmaz és a rögzített halmaz között, hogyan lehet létrehozni és elérni a halmazelemeket, a beállítási módszereket stb.