Множества в Python

Установка Python 

Выбор текстового редактора 

Запуск программ Python в командной строке 

Числа и арифметические операторы Python 

Строки и функция print в Python 

Списки и кортежи в Python 

Сегментация последовательностей в Python 

Цикл for и функция range в Python 

Команда if и функция input в Python 

Словари в Python 

Множества в Python 

Цикл while в Python 

Функции в Python 

Классы в Python 

Файлы и исключения в Python 

Функции json. Сохранение данных Python 

Тестирование функций и классов на Python

Python массивы. Библиотека NumPy

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

Содержание страницы:    
1.1. Создание множества на Python
1.2. Создание множеств встроенной функцией set
1.3. Определение длины множества
2.1. Проверка наличия элемента в множестве
2.2. Перебор элементов множества
3.1. Сравнение множеств
3.2. Математические операции с множествами
3.3. Математические операции с изменяемыми множествами
4. Добавление и удаление элементов
5. Трансформация множеств

 

 

 

 

 

 

 

 

 

 

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

Создание множества (set) происходит с помощью фигурных скобок {} так же, как и словарей, но элементы разделены просто запятыми, без пар "ключ : значение". В отличие от словарей и списков, множества не хранятся в каком-либо определенном порядке. 

>>> colors = {'blue', 'red', 'yellow', 'red', 'green'}
>>> print(colors)
{'red', 'green', 'yellow', 'blue'}

Повторяющаяся строка 'red'  была удалена при выводе.  Одно из самых важных областей применения множеств - это удаление дубликатов, которое выполняется автоматически. Значения выводятся не в порядке их перечисления, множества неупорядочены

 

 

1.2. Создание множеств встроенной функцией set 

Множества можно создавать на базе других коллекций, используя встроенную функцию set(). В примере ниже создается множество на базе списка. 

>>> cars = ['bmw', 'audi', 'mersedes', 'bmw', 'ford']
>>> set(cars)
{'bmw', 'ford', 'audi', 'mersedes'}

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

set()

 

1.3. Определение длины множества

Количество элементов определяется при помощи встроенной функции len.

>>> cars = {'bmw', 'audi', 'mersedes', 'ford'}
>>> len(cars)
4

 

 

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

Для проверки содержания элемента в множестве можно воспользоваться операторами in или not in.

>>> cars = {'bmw', 'audi', 'mersedes', 'ford'}
>>> 'audi' in cars
True
>>> 'audi' not in cars

False

 

2.2. Перебор элементов множества 

Для перебора элементов можно воспользоваться циклом for

>>> cars = {'bmw', 'audi', 'mersedes', 'ford'}
>>> for car in cars:
...     print(car)
...
bmw
ford
audi
mersedes

Так как множества не упорядочены, порядок перебора не имеет значения. 

 

 

3.1. Сравнение множеств. 

Для сравнения множеств в Python можно использовать различные операторы и методы:

>>> {1, 5, 10} == {5, 10, 1}
True
>>> {1, 5, 10} != {5, 10, 1}
False

 

 

>>> {1, 5, 10} < {5, 10, 1}
False
>>> {1, 5, 10} < {5, 10, 1, 4}
True

>>> {1, 5, 10} <= {5, 10, 1}
True
>>> {1, 5} <= {5, 10, 1}
True
>>> {1, 5, 10}.issubset({5, 10, 1})
True
>>> {1, 5}.issubset({5, 10, 1})
True

>>> {1, 5, 10} > {5, 10, 1}
False
>>> {1, 5, 10, 8} > {5, 10, 1}
True

>>> {1, 5, 10} >= {5, 10, 1}
True
>>> {1, 5, 10}.issuperset({5, 10, 1})
True
>>> {1, 5, 10, 8} >= {5, 10, 1}
True
>>> {1, 5, 10, 8}.issuperset({5, 10, 1})
True

 

 

3.2. Математические операции с множествами Python

Объединение двух множеств называется множество, состоящее из всех уникальный элементов обоих множеств. Для объединения множеств можно воспользоваться оператором | или методом union

>>> {1, 2, 3, 4} | {3, 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7}
>>> {1, 2, 3, 4}.union({3, 4, 5, 6, 7})
{1, 2, 3, 4, 5, 6, 7}

 

 

При пересечении двух множеств, получается множество, состоящее из всех уникальных элементов, входящих в оба множества. Пересечение можно вычислить оператором & или методом intersection

>>> {1, 2, 3, 4} & {3, 4, 5, 6, 7}
{3, 4}
>>> {1, 2, 3, 4}.intersection({3, 4, 5, 6, 7})
{3, 4}

Разность двух множеств является множество, состоящее из элементов левого операнда, не входящих в правый. Разность можно вычислить оператором - или методом difference.

>>> {1, 2, 3, 4} - {3, 4, 5, 6, 7}
{1, 2}
>>> {1, 2, 3, 4}.difference({3, 4, 5, 6, 7})
{1, 2}

Симметрической разностью двух множеств является множество, состоящее из элементов каждого множества, не входящих в другое множество. Симметрическую разность можно вычислить оператором ^ или методом symmetric_difference.

>>> {1, 2, 3, 4} ^ {3, 4, 5, 6, 7}
{1, 2, 5, 6, 7}
>>> {1, 2, 3, 4}.symmetric_difference({3, 4, 5, 6, 7})
{1, 2, 5, 6, 7}

Непересекающимися множествами называются множества, если они оба не содержат общих элементов. Проверка выполняется методом isdisjoint.

>>> {1, 2, 3, 4}.isdisjoint({3, 4, 5, 6, 7})
False
>>> {1, 2, 3, 4}.isdisjoint({5, 6, 7})
True

 

3.3. Математические операции с изменяемыми множествами 

 

 

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

>>> numbers = {1, 4, 6}
>>> numbers |= {2, 3, 4, 5}
>>> numbers
{1, 2, 3, 4, 5, 6}

>>> numbers = {1, 4, 6}
>>> numbers.update({7,8,9,10})
>>> numbers
{1, 4, 6, 7, 8, 9, 10}

 

 

4. Добавление и удаление элементов 

Метод add множества добавляет свой аргумент, если он еще не входит в множество, в противном случае множество остается без изменения. 

>>> numbers = {1, 4, 6}
>>> numbers.add(5)
>>> numbers
{1, 4, 5, 6}
>>> numbers.add(4)
>>> numbers
{1, 4, 5, 6}

 

 

Метод remove() множества удаляет свой аргумент из множества. Если значение отсутствует, то происходит ошибка KeyError:

>>> numbers = {1, 4, 6}
>>> numbers.remove(4)
>>> numbers
{1, 6}

Метод discard множества также удаляет аргумент, но в случае его отсутствия ошибка не происходит

>>> numbers = {1, 4, 6}
>>> numbers.discard(2)
>>> numbers
{1, 4, 6}

Метод pop() множества удаляет элемент и возвращает его:

>>> numbers = {1, 4, 6, 7, 10, 45, 11}
>>> numbers.pop()
1

Метод clear() очищает множество:

>>> numbers = {1, 4, 6}
>>> numbers.clear()
>>> numbers
set()

 

 

5. Трансформация множеств на Python 

Трансформация множеств определяется в фигурных скобках {}.  Создадим множество из списка, которое содержит только четные значения:

>>> numbers = [1, 4, 8, 11, 15, 15, 16, 48, 23, 58]
>>> evens = {item for item in numbers if item % 2 == 0}
>>> evens
{4, 8, 16, 48, 58}

 

Далее: Цикл while в Python

Назад: Словари в Python