← Назад
Множество (set) представляют еще один вид набора, который хранит только уникальные элементы.
users = {}
users = set()
users = {"Tom", "Bob", "Alice", "Tom"}
# функция print вывела один раз элемент "Tom",
# потому что множество содержит только уникальные значения
print(users) # {"Alice", "Bob", "Tom"}
people = ["Mike", "Bill", "Ted"]
users = set(people)
print(users) # {"Mike", "Bill", "Ted"}
print(len(users)) # 3
users = set()
users.add("Sam")
print(users) # {"Sam"}
Для удаления одного элемента вызывается метод remove():
users = {"Tom", "Bob", "Alice"}
user = "Tom"
if user in users:
users.remove(user)
print(users) # {"Bob", "Alice"}
Также для удаления можно использовать метод discard(), который не будет генерировать исключения при отсутствии
элемента:
users = {"Tom", "Bob", "Alice"}
users.discard("Tim") # элемент "Tim" отсутствует, и метод ничего не делает
print(users) # {"Tom", "Bob", "Alice"}
users.discard("Tom") # элемент "Tom" есть, и метод удаляет элемент
print(users) # {"Bob", "Alice"}
Для удаления всех элементов вызывается метод clear():
users.clear()
users = {"Tom", "Bob", "Alice"}
for user in users:
print(user)
С помощью метода copy() можно скопировать содержимое одного множества в другую переменную:
users = {"Tom", "Bob", "Alice"}
students = users.copy()
print(students) # {"Tom", "Bob", "Alice"}
Метод union() объединяет два множества и возвращает новое множество:
users1 = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}
users3 = users1.union(users2)
print(users3) # {"Bob", "Alice", "Sam", "Kate", "Tom"}
Пересечение множеств позволяет получить только те элементы, которые есть одновременно в обоих множествах.
Метод intersection() производит операцию пересечения множеств и возвращает новое множество:
users1 = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}
users3 = users1.intersection(users2)
print(users3) # {"Bob"}
# или
print(users1 & users2) # {"Bob"}
Еще одна операция - разность множеств возвращает те элементы, которые есть в первом множестве, но отсутствуют во втором.
Для получения разности множеств можно использовать метод difference() или операцию вычитания:
users1 = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}
users3 = users1.difference(users2)
print(users3) # {"Tom", "Alice"}
# или
print(users1 - users2) # {"Tom", "Alice"}
Отдельная разновидность разности множеств - симметрическая разность производится с помощью
метода symmetric_difference().
Она возвращает все элементы обоих множеств за исключением общих:
users1 = {"Tom", "Bob", "Alice"}
users2 = {"Sam", "Kate", "Bob"}
users3 = users1.symmetric_difference(users2)
print(users3) # {"Tom", "Alice", "Sam", "Kate"}
Метод issubset() позволяет выяснить, является ли текущее множество подмножеством (то есть частью) другого множества:
users = {"Tom", "Bob", "Alice"}
superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}
print(users.issubset(superusers)) # True
print(superusers.issubset(users)) # False
Метод issuperset(), наоборот, возвращает True, если текущее множество является надмножеством (то есть содержит) для
другого множества:
users = {"Tom", "Bob", "Alice"}
superusers = {"Sam", "Tom", "Bob", "Alice", "Greg"}
print(users.issuperset(superusers)) # False
print(superusers.issuperset(users)) # True
Тип frozenset является видом множеств, которое не может быть изменено.
Для его создания используется функция frozenset():
users = frozenset({"Tom", "Bob", "Alice"})
В такое множество мы не можем добавить новые элементы, как и удалить из него уже имеющиеся. Собственно поэтому frozen set поддерживает ограниченный набор операций:
| Методы | Описание |
|---|---|
| len(s) | возвращает длину множества |
| x in s | возвращает True, если элемент x присутствует в множестве s |
| x not in s | возвращает True, если элемент x отсутствует в множестве s |
| s.issubset(t) | возвращает True, если t содержит множество s |
| s.issuperset(t) | возвращает True, если t содержится в множестве s |
| s.union(t) | возвращает объединение множеств s и t |
| s.intersection(t) | возвращает пересечение множеств s и t |
| s.difference(t) | возвращает разность множеств s и t |
| s.copy() | возвращает копию множества s |
← Назад