Python. Множества. Основные понятия. Создание множества. Операция in. Операции над множествами создающие новое множество

Множества. Основные понятия. Создание множества. Операция in. Операции над множествами создающие новое множество


Содержание


1. Понятие множества

Язык программирования Python имеет средства для работы с множествами. В Python множество – это неупорядоченная коллекция элементов со следующими особенностями:

  • все элементы множества уникальны. Иными словами в множестве не может быть двух одинаковых элементов;
  • элементы множества есть неизменными объектами;
  • элементы множества могут быть разных типов.

В Python множество представлено отдельным типом данных. Множества поддерживают операции, которые существуют в теории множеств из курса математики. Множество может быть пустым (не содержать элементов).

Примеры множеств в виде литералов.

# множество из 3-х элементов: 'а', 5, 'textbook'
{'а', 5, "textbook"}

# множество содержащее числа от 0 до 5
{0,1,2,3,4,5}

# пустое множество
{ }

 

2. Создание объекта типа «множество». Функция set(). Примеры

Чтобы создать объект типа «множество» можно использовать один из нижеследующих способов:

  • с помощью присваивания этому объекту множества элементов в фигурных скобках { };
  • с помощью присваивания объекту некоторого результата, который был возвращен функцией set(). Функция set() позволяет превратить в множество объекты других типов;
  • с помощью присваивания объекту результата некоторой операции над множествами (например, операции & пересечения множеств);
  • с помощью присваивания объекту результата функции frozenset(). Функция frozenset() есть конструктором класса frozenset. Эта функция позволяет получить неизменяемое множество;
  • с помощью присваивания объекту результата функции, возвращающей некоторое множество.

Пример.

# Множества
# Создание объекта типа "множество"

# 1. С помощью фигурных скобок { }
x = { 0, 0, 1, 2, 3 } # x = {0, 1, 2, 3} - элементы в множестве не повторяются
y = { 'a', "textbook", 5 } # y = {'a', 'textbook', 5}
z = { True, False, 0.25, 'Hello' } # z = {False, True, 'Hello', 0.25}

# 2. С помощью функции set
x = set(['a', 5, "textbook", 5]) # x = {5, 'textbook', 'a'}
y = set('Hello!') # y = {'l', 'o', 'e', '!', 'H'}
z = set([0,1,2,3,4,5]) # z = {0, 1, 2, 3, 4, 5}

# 3. С помощью некоторой операции
x = { 1, 2, 3, 4 } & { 3, 2} # x = {2, 3}
y = { 1, 2, 3, 4 } - { 1, 4} # y = {2, 3}
z = { 'a', 'c', 5 } | { True } # z = {'a', 5, 'c', True}

# 4. С помощью функции frozenset
x = frozenset([1, 2, 3, 4]) # x - неизменяемое (immutable) множество

# 5. С помощью функции возвращающей множество
x = { 1, 2, 3, 4 }
y = { 3, 5, 7 }
z = x.union(y) # z = { 1, 2, 3, 4, 5, 7 }

 

3. Базовые операции над множествами. Перечень

Язык Python поддерживает следующие операции над множествами:

  • in – проверка элемента на вхождение в множество;
  • (минус) – разность множеств;
  • | – объединение множеств;
  • & – пересечение множеств;
  • – симметричная разность.


 

4. Операции in, not in. Проверка элемента на вхождение. Пример

Операция in используется в случаях, когда нужно определить входит ли элемент в множество. Общая форма операции следующая:

Item in Set

где

  • Item – некоторый объект (элемент), который нужно проверить на вхождение в множество Set. Если объект Item есть в множестве Set, то результат операции будет True. В противном случае результат операции будет False;
  • Set – некоторое множество.

Как правило, операция in используется в операторах проверки условия.

В программах оператор in можно объединять с другими логическими операторами, например оператором not. В этом случае общая форма инструкции not in следующая

Item not in Set

Результат операции not in всегда противоположен результату операции in.

Пример 1.

# Множества
# Операция in. Проверка вхождения элемента в множество

# 1. Применение in
x = { 3, 8, 'а', 'Hello' } # множество элементов
a = 'Hello' # элемент

if a in x:
    print('The element is in set')
else:
    print('The element is not in set')

Пример 2. Объединение оператора in с логическим оператором not.

# Применение конструкции not in
day = { 'Sun', 'Mon', 'Tue', 'Wed', 'Thi', 'Fri', 'Sat'}

# Ввести день с клавиатуры
inputDay = str(input('Input day of week: '))

# Проверка
if inputDay not in day:
    print('Wrong day')
else:
    print('OK')

Результат выполнения программы

Input day of week: sunday
Wrong day

 

5. Операция . Разность множеств. Пример

В Python операция разность множеств обозначается символом (минус). Кроме того для определения разности множеств в Python реализована функция difference().

Общая форма операции следующая:

set1set2

где

  • set1 – множество, от которого вычитаются (удаляются) элементы, размещенные в множестве set2. При вычитании рассматриваются только те элементы, которые являются общими (одинаковыми) для двух множеств. В результате создается новое множество, содержащие элементы множества set1, которых нет в множестве set2;
  • set2 – множество, определяющее элементы, которые нужно вычесть (удалить) из множества set1.

Операция разности множеств может образовывать цепи. В этом случае общая форма операции следующая:

set1 - set2 - set3 - ... - setN

Пример.

# Множества
# Операция -. Разность множеств

# Однотипные элементы
x = { 1, 2, 3, 5 }
y = { 2, 8 }
z = x - y # z = {1, 3, 5}
v = y - x # v = {8}

# Разнотипные элементы
x = { 'a', True, 'Text' }
y = { 2, 8, 16.23, 'a' }
z = x - y # z = {True, 'Text'}

 

6. Операция |. Объединение множеств. Пример

Объединение множеств a и b – это образование такого множества c, элементы которого есть в множестве a или есть в множестве b. В языке Python для реализации объединения множеств можно использовать операцию | или функцию union().

Операция объединения множеств | имеет следующую общую форму

set1 | set2

где

  • set1, set2 – некоторые множества, которые объединяются. Результирующее множество содержит все элементы множества set1 и все элементы множества set2.

Операция объединения множеств | может образовывать цепи как показано ниже

set1 | set2 | set3 | ... | setN

Пример.

# Множества
# Операция |. Объединение множеств
x = { 'a', 5, True }
y = { 2, 3.85, False }
z = x | y # z =   {3.85, True, False, 2, 5, 'a'}
v = x | y | { 170 } # v = {3.85, True, False, 2, 5, 'a', 170}

 

7. Операция &. Пересечение множеств. Пример

Пересечение двух множеств a, b – это множество c, которое содержит общие элементы множеств a, b. Каждый элемент множества c размещается в множестве a а также в множестве b.

В языке Python для реализации пересечения множеств используется операция & или функция intersection().

Операция пересечения множеств & имеет следующую общую форму

set1 & set2

где

  • set1, set2 – множества, для которых нужно реализовать так называемое «пересечение». В результате получается новое множество, которое содержит элементы, которые входят в оба множества set1 и set2. Элементы, которые входят только в одно из множеств set1, set2 усекаются.

Операция пересечения множеств & может образовывать цепи

set1 & set2 & set3 & ... & setN

Пример.

# Множества
# Операция &. Пересечение множеств

# Результат - пустое множество, нет общих элементов
x = { 'а', 5, True }
y = { 2, 3.85, False }
z = x & y # z =   {} - пустое множество

# Результат - непустое множество
x = { 3, 2.25, True, 'abc' }
y = { 2.25, 'abcd', 3, 7, True}
z = x & y # z = {True, 2.25, 3}

 

8. Операция ^. Симметричная разность. Пример

Для получения симметричной разности множеств в языке Python можно использовать операцию ^ или функцию symmetric_difference().

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

Общая форма операции следующая

set1 ^ set2

где

  • set1, set2 – множества для которых реализуется симметричная разность. В результате получается новое множество, содержащее элементы, которые не являются общими для множеств set1, set2.

Операция ^ может образовывать цепи

set1 ^ set2 ^ set3 ^ ... ^ setN

Пример.

# Множества
# Операция ^. Симметричная разность множеств

# Результат - пустое множество, нет общих элементов
x = { 1, 3, 5 }
y = { 3, 5, 1 }
z = x ^ y # z = {} - пустое множество

# Значение 3 в множествах есть общим, поэтому оно не включено в результат
x = { 1, 3, 5 }
y = { 2, 3, 8 }
z = x ^ y # z = {1, 2, 5, 8} - без значения 3

# Значения 'b', 'с' есть общими, поэтому они выбрасываются из результата
x = { 'a', 'b', 'c' }
y = { 'x', 'b', 'c', 'd', 'e' }
z = x ^ y # z = {'e', 'a', 'd', 'x'}

 

9. Пример использования множеств для фильтрации списков

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

# Использование множеств для фильтрации списков
# 1. Создать список чисел от 1 до 10
List = [5, 3, 2, 3, 4, 2, 3, 7, 9, 5, 7]

# 2. Определить, какие числа от 1 до 10 входят в список List
numbers = set(List) # numbers = [2, 3, 4, 5, 7, 9]

# 3. Вывести результат
print('numbers = ', numbers)

Результат выполнения программы

numbers = [2, 3, 4, 5, 7, 9]

 


Связанные темы