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]

 


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