← Назад
Множество (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 |
← Назад