Введение
В этой лабораторной работе вы получите практический опыт работы с множествами (sets) в Python. Множества — это фундаментальная структура данных, используемая для хранения уникальных, неупорядоченных элементов. Они очень эффективны для таких задач, как проверка наличия элемента в коллекции и выполнение математических операций над множествами.
Вы узнаете, как создавать множества, добавлять и удалять элементы, а также выполнять общие операции, такие как объединение (union), пересечение (intersection) и разность (difference). Наконец, вы увидите практическое применение множеств, используя их для легкого удаления дублирующихся элементов из списка.
Создание множества и добавление элементов
На этом первом шаге вы научитесь создавать множества (sets) и добавлять в них новые элементы. Множества — это коллекции уникальных элементов, что означает, что они автоматически отбрасывают любые дубликаты.
В вашей среде есть пустой файл с именем set_basics.py. Используя проводник файлов (file explorer) в левой части редактора, найдите и откройте ~/project/set_basics.py.
Добавьте следующий код Python в файл. Этот код демонстрирует несколько способов создания множества.
## Метод 1: Использование фигурных скобок {}
## Это создает множество с начальными элементами.
my_set = {'apple', 'banana', 'cherry'}
print("Set created with braces:", my_set)
print("Type of my_set:", type(my_set))
## Примечание: Множества автоматически удаляют дублирующиеся элементы.
duplicate_set = {'apple', 'banana', 'apple'}
print("Set with duplicates:", duplicate_set)
## Метод 2: Использование конструктора set() с итерируемым объектом (например, строкой)
## Это создает множество из уникальных символов в строке.
char_set = set('hello world')
print("Set from a string:", char_set)
## Метод 3: Создание пустого множества
## Для создания пустого множества необходимо использовать set(). {} создает пустой словарь (dictionary).
empty_set = set()
print("An empty set:", empty_set)
print("Type of empty_set:", type(empty_set))
Сохраните файл. Теперь откройте терминал в вашем редакторе (вы можете использовать меню: Terminal -> New Terminal) и запустите ваш скрипт следующей командой.
python ~/project/set_basics.py
Вы увидите вывод, похожий на следующий. Обратите внимание, что порядок элементов в множестве не гарантируется, и дубликаты удалены.
Set created with braces: {'cherry', 'apple', 'banana'}
Type of my_set: <class 'set'>
Set with duplicates: {'banana', 'apple'}
Set from a string: {'d', 'l', 'o', 'r', 'w', ' ', 'h', 'e'}
An empty set: set()
Type of empty_set: <class 'set'>
Далее давайте добавим новые элементы в существующее множество. Вы можете добавить один элемент с помощью метода add(), или несколько элементов с помощью метода update().
Добавьте следующий код в конец вашего файла set_basics.py.
## --- Adding elements ---
fruits = {'apple', 'banana'}
print("\nOriginal fruits set:", fruits)
## Используйте add() для добавления одного элемента
fruits.add('orange')
print("After adding 'orange':", fruits)
## add() не имеет эффекта, если элемент уже присутствует
fruits.add('apple')
print("After adding 'apple' again:", fruits)
## Используйте update() для добавления нескольких элементов из итерируемого объекта (например, списка)
fruits.update(['mango', 'grape'])
print("After updating with a list:", fruits)
Снова сохраните файл и запустите обновленный скрипт из терминала.
python ~/project/set_basics.py
Теперь вывод будет включать результаты добавления элементов.
Set created with braces: {'cherry', 'apple', 'banana'}
Type of my_set: <class 'set'>
Set with duplicates: {'banana', 'apple'}
Set from a string: {'d', 'l', 'o', 'r', 'w', ' ', 'h', 'e'}
An empty set: set()
Type of empty_set: <class 'set'>
Original fruits set: {'banana', 'apple'}
After adding 'orange': {'banana', 'orange', 'apple'}
After adding 'apple' again: {'banana', 'orange', 'apple'}
After updating with a list: {'grape', 'mango', 'banana', 'orange', 'apple'}
Теперь вы узнали, как создавать множества и изменять их путем добавления новых элементов.
Удаление элементов из множества
На этом шаге вы изучите различные способы удаления элементов из множества (set). Поскольку множества неупорядочены, вы не можете использовать индекс для удаления элементов. Вместо этого Python предоставляет специальные методы для этой цели.
Найдите и откройте файл set_removal.py в вашей директории ~/project.
Добавьте следующий код в файл. Он демонстрирует методы remove(), discard(), pop() и clear().
## --- Removing elements ---
my_set = {'a', 'b', 'c', 'd', 'e'}
print("Original set:", my_set)
## Метод 1: remove()
## Удаляет указанный элемент. Вызывает KeyError, если элемент не найден.
my_set.remove('b')
print("After removing 'b':", my_set)
## Следующая строка вызвала бы ошибку: my_set.remove('z')
## Метод 2: discard()
## Также удаляет указанный элемент, но НЕ вызывает ошибку, если элемент не найден.
print("\nStarting set for discard:", my_set)
my_set.discard('c')
print("After discarding 'c':", my_set)
my_set.discard('z') ## 'z' отсутствует во множестве, но ошибка не возникает.
print("After discarding 'z' (non-existent):", my_set)
## Метод 3: pop()
## Удаляет и возвращает произвольный элемент из множества.
## Поскольку множества неупорядочены, вы не знаете, какой элемент будет удален.
print("\nStarting set for pop:", my_set)
popped_item = my_set.pop()
print("Popped item:", popped_item)
print("Set after pop():", my_set)
## Метод 4: clear()
## Удаляет все элементы из множества, оставляя пустое множество.
print("\nStarting set for clear:", my_set)
my_set.clear()
print("Set after clear():", my_set)
Сохраните файл. Теперь запустите скрипт из терминала.
python ~/project/set_removal.py
Ваш вывод должен быть похож на следующий. Элемент, удаленный с помощью pop(), может отличаться при каждом запуске скрипта, поскольку множества неупорядочены.
Original set: {'d', 'c', 'e', 'a', 'b'}
After removing 'b': {'d', 'c', 'e', 'a'}
Starting set for discard: {'d', 'c', 'e', 'a'}
After discarding 'c': {'d', 'e', 'a'}
After discarding 'z' (non-existent): {'d', 'e', 'a'}
Starting set for pop: {'d', 'e', 'a'}
Popped item: d
Set after pop(): {'e', 'a'}
Starting set for clear: {'e', 'a'}
Set after clear(): set()
Теперь вы знаете основные методы удаления элементов из множества и понимаете важное различие между remove() и discard().
Выполнение операций над множествами
Множества особенно полезны для выполнения математических операций, таких как объединение (union), пересечение (intersection) и разность (difference). На этом шаге вы узнаете, как выполнять эти операции в Python.
Найдите и откройте файл set_operations.py в вашей директории ~/project.
Добавьте следующий код в файл. Этот код определяет два множества, а затем выполняет над ними три основные операции с множествами.
set_a = {'a', 'b', 'c', 'd'}
set_b = {'c', 'd', 'e', 'f'}
print("Set A:", set_a)
print("Set B:", set_b)
## --- Union (Объединение) ---
## Объединение содержит все уникальные элементы из обоих множеств.
## Вы можете использовать оператор | или метод .union().
union_set_op = set_a | set_b
union_set_method = set_a.union(set_b)
print("\nUnion with | operator:", union_set_op)
print("Union with .union() method:", union_set_method)
## --- Intersection (Пересечение) ---
## Пересечение содержит только те элементы, которые являются общими для обоих множеств.
## Вы можете использовать оператор & или метод .intersection().
intersection_set_op = set_a & set_b
intersection_set_method = set_a.intersection(set_b)
print("\nIntersection with & operator:", intersection_set_op)
print("Intersection with .intersection() method:", intersection_set_method)
## --- Difference (Разность) ---
## Разность содержит элементы, которые есть в первом множестве, но НЕТ во втором множестве.
## Вы можете использовать оператор - или метод .difference().
difference_set_op = set_a - set_b
difference_set_method = set_a.difference(set_b)
print("\nDifference (A - B) with - operator:", difference_set_op)
print("Difference (A - B) with .difference() method:", difference_set_method)
## Обратите внимание, что порядок имеет значение для разности
difference_b_a = set_b - set_a
print("Difference (B - A):", difference_b_a)
Сохраните файл и выполните его из терминала.
python ~/project/set_operations.py
Вывод четко покажет результаты каждой операции.
Set A: {'d', 'c', 'a', 'b'}
Set B: {'d', 'c', 'f', 'e'}
Union with | operator: {'d', 'c', 'f', 'e', 'a', 'b'}
Union with .union() method: {'d', 'c', 'f', 'e', 'a', 'b'}
Intersection with & operator: {'d', 'c'}
Intersection with .intersection() method: {'d', 'c'}
Difference (A - B) with - operator: {'a', 'b'}
Difference (A - B) with .difference() method: {'a', 'b'}
Difference (B - A): {'f', 'e'}
Вы успешно использовали как символы операторов, так и методы для выполнения операций объединения, пересечения и разности над множествами.
Использование множества для удаления дубликатов из списка
Одним из наиболее распространенных и практичных применений множеств является быстрое удаление повторяющихся элементов из списка (list). Поскольку множества могут содержать только уникальные элементы, преобразование списка во множество, а затем обратно в список — это простой и эффективный способ достижения этой цели.
Найдите и откройте финальный файл для этой лабораторной работы, remove_duplicates.py, в вашей директории ~/project.
Добавьте следующий код в файл.
## A list containing several duplicate numbers
numbers_list = [1, 5, 2, 3, 5, 1, 4, 2, 2, 5]
print("Original list with duplicates:", numbers_list)
## Step 1: Convert the list to a set.
## This automatically removes all duplicate elements.
unique_numbers_set = set(numbers_list)
print("Set created from list (duplicates gone):", unique_numbers_set)
## Step 2: Convert the set back to a list.
## The new list will only contain the unique elements.
unique_numbers_list = list(unique_numbers_set)
print("Final list with duplicates removed:", unique_numbers_list)
## Note: This process does not preserve the original order of the elements
## because sets are an unordered data structure.
Сохраните файл и запустите его из терминала.
python ~/project/remove_duplicates.py
Вывод демонстрирует весь процесс, показывая исходный список, промежуточное множество и финальный список без дубликатов.
Original list with duplicates: [1, 5, 2, 3, 5, 1, 4, 2, 2, 5]
Set created from list (duplicates gone): {1, 2, 3, 4, 5}
Final list with duplicates removed: [1, 2, 3, 4, 5]
Вы успешно применили свои знания о множествах для решения распространенной программной задачи: удаления дубликатов из списка.
Резюме
В этой лабораторной работе вы освоили основные навыки работы с множествами (sets) в Python. Вы начали с создания множеств, используя различные синтаксисы, и узнали, как они по своей сути обеспечивают уникальность элементов. Вы практиковались в изменении множеств, добавляя элементы с помощью add() и update(), и удаляя их с помощью remove(), discard(), pop() и clear(), отмечая ключевые различия между этими методами.
Кроме того, вы изучили основные математические операции над множествами — объединение (|), пересечение (&) и разность (-), которые являются фундаментальными для анализа данных и разработки алгоритмов. Наконец, вы применили эти знания на практике, реализовав элегантный метод для удаления повторяющихся элементов из списка — распространенную задачу при очистке и подготовке данных. Теперь вы готовы эффективно использовать множества в своих программах на Python.



