Junior
V čom sa líši množina od poľa?
sobes.tech AI
Odpoveď od AI
Množina (set) v Pythone je neporiaden zbierka jedinečných prvkov bez duplikátov. Pole (zvyčajne reprezentované zoznammi list alebo poľami z modulu array) je usporiadaná zbierka meniace sa prvkov, kde je poradie dôležité, a môžu sa vyskytovať duplikáty.
Hlavné rozdiely:
- Usporiadanie: Množina nie je usporiadaná; poradie prvkov nie je garantované a môže sa meniť. Zoznam/poľ je usporiadaný; prvky majú indexy.
- Jedinečnosť: Prvky množiny musia byť jedinečné. Zoznam/poľ môže obsahovať duplikáty.
- Indexovanie/rezanie: Množiny nepodporujú indexovanie a rezanie kvôli absencii poradia. Zoznamy/poľ podporujú prechádzanie podľa indexu a rezanie.
- Operácie: Množiny podporujú matematické operácie nad množinami (zjednotenie, prienik, rozdiel). Zoznamy/poľ majú iné operácie (konkatenácia, opakovanie).
- Výkon: Kontrola prítomnosti prvku (
in) v množine je asymptoticky rýchlejšia (O(1) priemerné) v porovnaní so zoznamom (O(n) priemerné).
Príklad vytvorenia:
# Vytvorenie množiny
my_set = {1, 2, 3, 2, 4} # Duplikát 2 bude ignorovaný
# print(my_set) # Vypíše {1, 2, 3, 4} (poradie môže byť odlišné)
# Vytvorenie zoznamu
my_list = [1, 2, 3, 2, 4]
# print(my_list) # Vypíše [1, 2, 3, 2, 4] (zachová poradie a duplikáty)
Porovnanie operácií:
| Operácia | Množina | Zoznam/Poľ |
|---|---|---|
Kontrola in |
Rýchle (O(1) priemerné) | Pomalé (O(n) priemerné) |
| Pridanie | add(), update() |
append(), extend(), insert() |
| Odstránenie | remove(), discard(), pop() |
remove(), pop(), del |
| Zjednotenie | union() alebo ` |
` |
| Prienik | intersection() alebo & |
Priamo nepodporované |
| Prístup podľa indexu | Nie | Áno |
Množiny sa používajú, keď je dôležitá jedinečnosť prvkov a rýchla kontrola ich prítomnosti, a poradie nie je dôležité (napríklad na odstránenie duplikátov, vykonávanie viacerých operácií). Zoznamy/poľ sú používané, keď je dôležný poradie prvkov, je potrebný prístup podľa indexu, a môžu sa vyskytovať duplikáty.