Množiny (neuspořádaná data s optimalizovanými logickými operacemi)

Datové typy v Pythonu

Jason Myers

Instructor

Množina

  • Jedinečné prvky
  • Neuspořádané
  • Měnitelné
  • Implementace teorie množin z matematiky v Pythonu
Datové typy v Pythonu

Vytváření množin

  • Množiny se vytvářejí ze seznamu
cookies_eaten_today = ['chocolate chip', 'peanut butter', 
   ...: 'chocolate chip', 'oatmeal cream', 'chocolate chip']

types_of_cookies_eaten = set(cookies_eaten_today)
print(types_of_cookies_eaten)
set(['chocolate chip', 'oatmeal cream', 'peanut butter'])
Datové typy v Pythonu

Úprava množin

  • .add() přidá jeden prvek
types_of_cookies_eaten.add('biscotti')

types_of_cookies_eaten.add('chocolate chip')

print(types_of_cookies_eaten)
set(['chocolate chip', 'oatmeal cream', 'peanut butter', 'biscotti'])
Datové typy v Pythonu

Aktualizace množin

  • .update() sloučí jinou množinu nebo seznam
cookies_hugo_ate = ['chocolate chip', 'anzac']

types_of_cookies_eaten.update(cookies_hugo_ate)

print(types_of_cookies_eaten)
set(['chocolate chip', 'anzac', 'oatmeal cream',  'peanut butter', 'biscotti'])
Datové typy v Pythonu

Odstraňování dat z množin

  • .discard() bezpečně odstraní prvek z množiny podle hodnoty
  • .pop() odstraní a vrátí libovolný prvek (KeyError, je-li prázdná)
types_of_cookies_eaten.discard('biscotti')

print(types_of_cookies_eaten)
set(['chocolate chip', 'anzac', 'oatmeal cream', 'peanut butter'])
types_of_cookies_eaten.pop()
types_of_cookies_eaten.pop()
'chocolate chip'
'anzac'
Datové typy v Pythonu

Operace s množinami – podobnosti

  • Metoda .union() vrací množinu všech prvků (or)
  • Metoda .intersection() identifikuje překrývající se data (and)
cookies_jason_ate = set(['chocolate chip', 'oatmeal cream',
'peanut butter'])
cookies_hugo_ate = set(['chocolate chip', 'anzac'])

cookies_jason_ate.union(cookies_hugo_ate)
set(['chocolate chip', 'anzac', 'oatmeal cream', 'peanut butter'])
cookies_jason_ate.intersection(cookies_hugo_ate)
set(['chocolate chip'])
Datové typy v Pythonu

Operace s množinami – rozdíly

  • Metoda .difference() identifikuje prvky přítomné v cílové množině, které nejsou v argumentu (-)
  • Cílová množina je důležitá!
cookies_jason_ate.difference(cookies_hugo_ate)
set(['oatmeal cream', 'peanut butter'])
cookies_hugo_ate.difference(cookies_jason_ate)
set(['anzac'])
Datové typy v Pythonu

Pojďme si procvičit!

Datové typy v Pythonu

Preparing Video For Download...