Освой Python играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Python: Set/Frozenset (Множество)

Множество (класс set) - это контейнер, который содержит уникальные не повторяющиеся элементы в случайном порядке.

Для множеств используются фигурные скобки, как у словарей.


mySet = {'c', 'a', 't'}
# выводится в любом случайном порядке
print(mySet) # {'t', 'c', 'a'} 

Множество удобно использовать для удаления повторяющихся элементов. Создадим список с элементами, которые повторяются по несколько раз и сконвертируем его во множество. На этот раз множество создадим через метод set().


words = ['a', 'a', 'b', 'b', 'c', 'd', 'e']
mySet = set(words)

print(str(mySet))

У множеств можно находить объединение или пересечение элементов.

Число элементов вычисляется через len().

Другие методы: 'clear' (очистка множества), 'copy', 'pop' (удаляет первый элемент из множества. Так как множества не упорядочены, нельзя точно сказать, какой элемент будет первым), 'remove', 'update', '__bases__', '__contains__', 'add', 'difference', 'difference_update', 'discard', 'intersection' (пересечение), 'intersection_update', 'isdisjoint' (истина, если set и other не имеют общих элементов), 'issubset', 'issuperset', 'symmetric_difference', 'symmetric_difference_update', 'union' (объединение нескольких множеств).

frozenset

frozenset - это неизменяемое множество.

Методы: '__name__', 'copy', '__bases__', '__contains__', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union'.

Создадим два разных типа множества, сравним их и попытаемся добавить новые элементы.


setCat = set('кот')
frozenCat = frozenset('кот')
print(setCat == frozenCat)

print(type(setCat))    # set
print(type(frozenCat)) #frozenset

setCat.add('э') # можем добавить
print(setCat)

frozenCat.add('e') # эта строка вызовет ошибку при компиляции
Реклама