Множества (неупорядоченные данные с оптимизированными логическими операциями)

Типы данных в Python

Jason Myers

Instructor

Множество

  • Уникальные элементы
  • Неупорядоченные
  • Изменяемые
  • Реализация теории множеств из математики в Python
Типы данных в Python

Создание множеств

  • Множества создаются из списка
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'])
Типы данных в Python

Изменение множеств

  • .add() добавляет один элемент
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'])
Типы данных в Python

Обновление множеств

  • .update() объединяет множество с другим множеством или списком
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'])
Типы данных в Python

Удаление данных из множеств

  • .discard() безопасно удаляет элемент из множества по значению
  • .pop() удаляет и возвращает произвольный элемент (KeyError при пустом множестве)
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'
Типы данных в Python

Операции с множествами – сходства

  • .union() возвращает множество всех элементов (or)
  • .intersection() находит пересекающиеся элементы (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'])
Типы данных в Python

Операции с множествами – различия

  • .difference() находит элементы, которые есть в исходном множестве, но отсутствуют в аргументе (-)
  • Порядок вызова важен!
cookies_jason_ate.difference(cookies_hugo_ate)
set(['oatmeal cream', 'peanut butter'])
cookies_hugo_ate.difference(cookies_jason_ate)
set(['anzac'])
Типы данных в Python

Давайте потренируемся!

Типы данных в Python

Preparing Video For Download...