Множества Python3

Множество — это неупорядоченная последовательность уникальных элементов.

Элементы множества не повторяются, и можно выполнять обычные операции над множествами, такие как пересечение, объединение и разность.

Фигурные скобки можно использовать{ }для создания множества, элементы которого разделяются запятыми,, или также можно использоватьset()функцию для создания множества.

Формат создания:

parame = {value01,value02,...}
或者
set(value)

Ниже приведён простой пример:

set1 = {1, 2, 3, 4}            # 直接使用大括号创建集合
set2 = set([4, 5, 6, 7])      # 使用 set() 函数从列表创建集合

Примечание:Чтобы создать пустое множество, необходимо использовать set(), а не{ }, потому что{ }используется для создания пустого словаря.

Дополнительные примеры:

Пример (Python 3.0+)

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # Здесь демонстрируется функция удаления дубликатов
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # Быстро проверить, содержится ли элемент в множестве
True
>>> 'crabgrass' in basket
False

>>> # Ниже показаны операции между двумя множествами.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # Элементы, содержащиеся в множестве a, но не в множестве b
{'r', 'd', 'b'}
>>> a | b                              # Все элементы, содержащиеся в множестве a или множестве b
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # Элементы, содержащиеся одновременно в множестве a и множестве b
{'a', 'c'}
>>> a ^ b                              # Элементы, не содержащиеся одновременно в a и b
{'r', 'd', 'b', 'm', 'z', 'l'}

Подобно списковым включениям, множества также поддерживают включения множеств:

Пример (Python 3.0+)

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

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

1. Добавление элементов

Формат синтаксиса следующий:

s.add( x )

Добавить элемент x в множество s; если элемент уже существует, операция не выполняется.

Пример (Python 3.0+)

>>> thisset = set(("Google", "Example", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Example'}

Существует также другой метод, который может добавлять элементы, и его параметр может быть списком, кортежем, словарём и т. д. Формат синтаксиса следующий:

s.update( x )

Может быть несколько значений x, разделённых запятыми.

Пример (Python 3.0+)

>>> thisset = set(("Google", "Example", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Example'}
>>> thisset.update([1,4],[5,6])  
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Example'}
>>>

2. Удаление элементов

Формат синтаксиса следующий:

s.remove( x )

Удалить элемент x из множества s; если элемент не существует, возникнет ошибка.

Пример (Python 3.0+)

>>> thisset = set(("Google", "Example", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Example'}
>>> thisset.remove("Facebook")   # Возникает ошибка, если элемент не существует
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>>

Кроме того, существует другой метод, который также удаляет элементы из множества, и ошибка не возникает, если элемент не существует. Формат следующий:

s.discard( x )

Пример (Python 3.0+)

>>> thisset = set(("Google", "Example", "Taobao"))
>>> thisset.discard("Facebook")  # Ошибка не возникает, если элемент не существует
>>> print(thisset)
{'Taobao', 'Google', 'Example'}

Мы также можем случайным образом удалить элемент из множества. Синтаксис следующий:

s.pop() 

Пример в режиме скрипта (Python 3.0+)

thisset = set(("Google", "Example", "Taobao", "Facebook"))
x = thisset.pop()

print(x)

Результат вывода:

Example

Результаты теста каждый раз разные при многократном выполнении.

Метод pop множества располагает множество в неупорядоченном порядке, а затем удаляет первый элемент слева этого неупорядоченного множества.

3. Подсчёт количества элементов в множестве

Формат синтаксиса следующий:

len(s)

Подсчитайте количество элементов в множестве s.

Пример (Python 3.0+)

>>> thisset = set(("Google", "Example", "Taobao"))
>>> len(thisset)
3

4. Очистка множества

Формат синтаксиса следующий:

s.clear()

Очистите множество s.

Пример (Python 3.0+)

>>> thisset = set(("Google", "Example", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()

5. Проверка наличия элемента в множестве

Формат синтаксиса следующий:

x in s

Определите, находится ли элемент x в множестве s; верните True, если он существует, и False, если нет.

Пример (Python 3.0+)

>>> thisset = set(("Google", "Example", "Taobao"))
>>> "Example" in thisset
True
>>> "Facebook" in thisset
False
>>>

Полный список встроенных методов множеств

Метод Описание
add()Добавление элементов в множество
clear()Удалить все элементы из множества
copy()Скопировать множество
difference()Вернуть разность нескольких множеств
difference_update()Удалить элемент из множества, если он также существует в указанном множестве.
discard()Удалить указанный элемент из множества
intersection()Вернуть пересечение множеств
intersection_update()Вернуть пересечение множеств.
isdisjoint()Определяет, содержат ли два множества одинаковые элементы; возвращает True, если не содержат, иначе возвращает False.
issubset()Определяет, является ли указанное множество подмножеством множества, переданного в качестве параметра этому методу.
issuperset()Определяет, является ли множество, переданное в качестве параметра этому методу, подмножеством указанного множества.
pop()Удаляет случайный элемент
remove()Удаляет указанный элемент
symmetric_difference()Возвращает множество элементов, которые не повторяются в двух множествах.
symmetric_difference_update()Удаляет из текущего множества элементы, совпадающие с элементами другого указанного множества, и вставляет различные элементы из другого указанного множества в текущее множество.
union()Вернуть объединение двух множеств
update()Добавление элементов в множество
len()Подсчитать количество элементов в множестве
Другие расширения