Python. Множества

Python. Множества

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

Множество в программе можно идентифицировать, перечислив элементы множества в фигурных скобках.

Например,

color_set = {"red", "yellow", "green"}
print(color_set)

Если запустить программу несколько раз, то можем получить следующий вывод:

{"red", "yellow", "green"}

{"yellow",  "red", "green"}

{"red", "green", "yellow"}

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

Множества

  • множества не содержат одинаковых элементов;
  • порядок элементов множества не определен;
  • множества позволяют добавлять и удалять элементы; 
  • элементы множества могут быть разного типа;
  • возможность перебора элементов множества;
  • возможность проверки наличия элемента во множестве;
  • применять операции пересечения, объединения, разности и симметричной разности множеств.

В программе пустое множество может быть объявлено как set():

fruits = set() # пустое множество fruits
fruits = {"apple", "orange", "lemon", "banana"} # непустое множество из 4-х элементов
print(fruits) # вывод множества {"apple", "orange", "lemon", "banana"}

Интересно! Если вы используете вывод одного и того же набора несколько раз в одной и той же программе, то порядок во всех выводах будет одинаковым.

Когда на экран выводится пустое множество, то при выводе появится: set ()

fruits = set() # пустое множество fruits
print(fruits) # set()

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

# множество fruits_and_price содержат строки и целые числа
fruits_and_price = {"apple", 300, "orange", 700, "lemon", 900, "banana", 550}

Множество содержит только уникальные элементы, т.е. элементы не повторяются в наборе.

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

# множество fruits содержит два элемента "orange"
fruits = {"apple", "orange", "lemon", "orange", "banana"}

# выводится только 4 элемента
print(fruits) # {"apple", "orange", "lemon", "banana"}

Функции множества  len(), sum(), min(), max()

numbers = {5, 3, 7, 4} 
print(len(numbers)) # количество элементов множества fruits = 4
print(sum(numbers)) # сумма элементов множества (только для чисел) = 19
print(min(numbers)) # минимальное значение множества = 3
print(max(numbers)) # максимальное значение множества = 7 

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

1. Определение количества элементов во множестве

len(переменная множества)

fruits = {"apple", "orange", "lemon", "banana"}
print(len(fruits)) # количество элементов множества = 4

fruits_and_price = {"apple", 300, "orange", 700, "lemon", 900, "banana", 550}
print(len(fruits_and_price)) # количество элементов множества = 8

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

for item in my_set:

fruits = {"apple", "orange", "lemon", "banana"}
for item in fruits: # перебор элементов множества
 print(item) # вывод элемента множества, порядок может каждый раз отличаться

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

if item in my_set:

if item in my_set: # проверка есть ли элемемент item во множестве
 print('Элемент находится во множестве')
else:
 print('Элемента нет во множестве')

4. Добавление элемента во множество

my_set.add(item) # add() - метод добавления элемента

fruits = {"apple", "orange", "lemon", "banana"}
fruit = "melon"
fruits.add(fruit) # добавить новый элемент во множество
print(len(fruits)) # количество элементов множества = 5

Если мы добавим элемент, который уже есть, то набор элементов множества не изменится.

my_set = set() # инициализация пустого множества
my_set.add(1) # добавление первого элемента во множество
my_set.add(5) # добавление второго элемента во множество
my_set.add(1) # добавление третьего элемента во множество
print(my_set) # вывод {1, 5}

5. Удаление элемента

Для удаления элемента из набора используются три различных метода:

discard - удаляет заданный элемент, если он есть в наборе, и ничего не делает, если его нет;

my_set = {'one', 'two', 'three'}
my_set.discard('two') # element 'two' removed from set my_set
my_set.discard('four') # item not deleted, no error
print(my_set) # will print the remaining elements of the set {'one', 'three'}

remove  - удаляет заданный элемент, если он есть в наборе, или выдает KeyError если нет;

my_set = {'one', 'two', 'three'}
my_set.remove('two') # element 'two' removed from my_set
print(my_set) # will print the remaining elements of the set {'one', 'three'}
my_set.remove('four') # cannot be removed, KeyError

Метод удаления позволит вам проверить наличие ошибки в программе. Если вы уверены, что элемент должен быть в наборе, лучше получить ошибку при отладке и сразу ее исправить, чем тратить время на поиски, если программа работает некорректно.

pop - удаляет некоторый элемент из множества и возвращает его в качестве результата. В этом случае порядок удаления неизвестен.

my_set = {'one', 'two', 'three'}
print('before deletion:', my_set)
item = my_set.pop()
print('deleted item:', item)
print('after deletion:', my_set)

6. Удаление всех элементов множества

my_set.clear ()

my_set = {'one', 'two', 'three'}
my_set.clear()
print(my_set)  # вывод set()

Логические операции двух множеств

Новый набор можно получить из двух множеств, используя следующие операции:

Операция Пример использования
Intersection/Пересечение

set1 = {5, 8, 4, 6}
set2 = {1, 2, 8, 5}
new_set = set1 & set2
print(new_set)
new_set = set1.intersection(set2)
print(new_set)
Вывод: {5, 8}

Union/Объединение 

set1 = {5, 8, 4, 6}
set2 = {1, 2, 8, 5}
new_set = set1 | set2
print(new_set)
new_set = set1.union(set2)
print(new_set)
Вывод: {1, 2, 4, 5, 6, 8}

Difference/Разность

set1 = {5, 8, 4, 6}
set2 = {1, 2, 8, 5}
new_set = set1 - set2
print(new_set)
new_set = set1.difference(set2)
print(new_set)
Вывод: {4, 6}

Symmetric Difference/

Симметричная разность

set1 = {5, 8, 4, 6}
set2 = {1, 2, 8, 5}
new_set = set1 ^ set2
print(new_set)
new_set = set1.symmetric_difference(set2)
print(new_set)

 

Вывод: {1, 2, 4, 6}

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

print({1, 2, 3, 4} == {4, 3, 1, 2}) # True
print({1, 3, 2, 4} != {4, 3, 1, 2}) # False
print({"one", "two", "three"} >= {"one", "three"}) # True
print({2, 4} < {1, 3, 4}) # False
print({"one", "more", "time"} < {"time", "one", "more"}) # False

Подмножество и надмножество

s1 = {'a', 'b', 'c'}
print(s1 <= s1) # True
s2 = {'a', 'b'}
print(s2 <= s1) # True
s3 = {'a'}
print(s3 <= s1) # True
s4 = {'a', 'z'}
print(s4 <= s1) # False

Операция s1 < s2 значит "s1 подмножество множество s2, но не совпадает с ним", то есть все элементы множества s1 содержатся в s2.

Операция s1 > s2 значит "s1 надмножество множества s2, но не совпадает с ним", то есть все элементы множества s1 содержат элементы множества s2. 

Вопросы:

  1. Что такое множество в программировании на Python?
  2. Опишите особенности множества.

Упражнения:

Упр. 1 "Определите результаты"

Упр. 2 "Сравните множества"

Упр. 3 "Операции множеств"

Упр. 4 "Результаты выполнения операций множеств"

Категория: Programming languages | Добавил: bzfar77 (09.05.2022)
Просмотров: 1089 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar