Junior
V čem se liší množina od pole?
sobes.tech AI
Odpověď od AI
V Pythonu je množina (set) neuspořádaná kolekce unikátních prvků bez duplicit. Seznam (obvykle reprezentovaný jako list nebo pole z modulu array) je uspořádaná kolekce měnitelných prvků, kde je důležitý pořadí a mohou se vyskytovat duplicity.
Hlavní rozdíly:
- Uspořádání: Množina není uspořádaná; pořadí prvků není garantováno a může se měnit. Seznam/pole je uspořádaný; prvky mají indexy.
- Unikátnost: Prvky množiny musí být unikátní. Seznam/pole může obsahovat duplicity.
- Indexování/Řezání: Množiny nepodporují indexování ani řezání kvůli absenci pořadí. Seznamy/pole podporují průchod přes index a řezání.
- Operace: Množiny podporují matematické operace nad množinami (sjednocení, průnik, rozdíl). Seznamy/pole mají jiné operace (konkatenace, opakování).
- Výkon: Kontrola členství (
in) v množině je průměrně rychlejší (O(1)) ve srovnání se seznamem (O(n)).
Příklad vytvoření:
# Vytvoření množiny
my_set = {1, 2, 3, 2, 4} # Duplicita 2 bude ignorována
# print(my_set) # Ukáže například {1, 2, 3, 4} (pořadí může být jiné)
# Vytvoření seznamu
my_list = [1, 2, 3, 2, 4]
# print(my_list) # Ukáže [1, 2, 3, 2, 4] (zachovává pořadí a duplicity)
Porovnání operací:
| Operace | Množina | Seznam/pole |
|---|---|---|
Kontrola in |
Rychlá (O(1) průměrně) | Pomalejší (O(n) průměrně) |
| Přidání | add(), update() |
append(), extend(), insert() |
| Odstranění | remove(), discard(), pop() |
remove(), pop(), del |
| Unie | union() nebo ` |
` |
| Průnik | intersection() nebo & |
Nepodporováno přímo |
| Přístup přes index | Ne | Ano |
Množiny se používají, když je důležitá unikátnost prvků a rychlá kontrola jejich existence, a pořadí není důležité (například pro odstranění duplicit, provádění množinových operací). Seznamy/pole se používají, když je důležité pořadí prvků, je potřeba přístup přes index, a mohou být duplicitní.