Множество — это математический объект, представляющий собой совокупность уникальных элементов, неупорядоченных по какому-либо принципу. Элементы в множестве не повторяются, и порядок их следования не имеет значения.
Пример множества из реальной жизни:
Допустим, у нас есть множество «студенты в университете». В этом множестве каждый студент представляет собой уникальный элемент. Порядок, в котором они упоминаются, не имеет значения, и каждый студент уникален. Например:
{Анна, Боб, Карл, Диана, Боб}
В данном случае, элемент «Боб» встречается всего один раз, поскольку в множестве элементы уникальны.
Неупорядоченная коллекция уникальных элементов: В Python, множество представляет собой структуру данных, которая не обладает порядком.
Элементы множества не имеют индексов, и к ним можно обращаться только по значению.
Уникальность элементов означает, что в множестве не может быть повторяющихся значений.
Представление множества в Python.
Множество создается с использованием фигурных скобок: {элемент1, элемент2, ...}
.
Пример: my_set = {1, 2, 3}
Пример использования множеств на конкретных задачах
Уникальные элементы в списке заказов:
Проблема:
- У нас есть список заказов, и нам необходимо выделить уникальные товары, которые заказывались.
Решение:
- Создаем множество, добавляем в него все товары из списка заказов. Таким образом, получаем уникальные элементы.
orders = ["товар1", "товар2", "товар1", "товар3", "товар2"]
unique_items = set(orders)
Поиск общих интересов между пользователями в социальной сети:
Проблема:
- Нам нужно определить общие интересы между пользователями в социальной сети.
Решение:
- Используем множества для представления интересов каждого пользователя. Затем, для поиска общих интересов, применяем операцию пересечения множеств.
user1_interests = {"фильмы", "музыка", "спорт"}
user2_interests = {"музыка", "книги", "спорт"}
common_interests = user1_interests.intersection(user2_interests)
Создание множеств в Python:
- Вручную. Мы можем создавать множества, указывая элементы в фигурных скобках.
manual_set = {1, 2, 3, 4}
- С использованием функции set(). Функция set() позволяет создавать множества из других итерируемых объектов, таких как списки или строки.
list_set = set([1, 2, 3, 4]) string_set = set("hello")
- С использованием генератора множеств. Генераторы множеств позволяют создавать множества с использованием выражений и циклов.
set_generator = {x for x in range(1, 5)}
Как создать пустое множество?
В Python, {}
используется для создания пустого словаря, а не пустого множества.
Для создания пустого множества используется функция
set()
.
Примеры создания множеств
# Создание множеств вручную
manual_set = {1, 2, 3, 4}
print(manual_set) # Вывод: {1, 2, 3, 4}
# Создание множества с использованием функции set()
list_set = set([1, 2, 3, 4])
string_set = set("hello")
print(list_set) # Вывод: {1, 2, 3, 4}
print(string_set) # Вывод: {'e', 'l', 'h', 'o'}
# Создание множества с использованием генератора множеств
set_generator = {x for x in range(1, 5)}
print(set_generator) # Вывод: {1, 2, 3, 4}
# Попытка создания пустого множества с использованием {}
# Почему нельзя использовать {} для создания пустого множества?
# Потому что это создаст пустой словарь, а не множество
empty_set = set() # Правильный способ создания пустого множества
empty_dict = {} # Это будет пустым словарем, не множеством
Задание 1: Создайте множество из чисел от 1 до 5 включительно с использованием генератора.
Задание 2: Создайте множество из первых пяти букв английского алфавита с использованием set().
Задание 3: Создайте множество из квадратов чисел от 1 до 5 с использованием генератора.
Задание 4: Создайте множество из четных чисел от 2 до 10 включительно с использованием ручного создания.
Задание 5: Создайте множество, содержащее элементы общие для двух множеств (1, 2, 3) и (3, 4, 5) с использованием set().
Задание 6: Создайте множество из уникальных символов в строке «hello» с использованием ручного создания.
Задание 7: Создайте множество из букв в слове «programming» без повторений с использованием генератора.
Задание 8: Создайте множество из кубов нечетных чисел от 1 до 10 с использованием генератора и фильтра.
Задание 9: Создайте множество из квадратов чисел от 1 до 10, исключив числа, делящиеся на 3, с использованием генератора и фильтра.
# Задание 1: Создайте множество из чисел от 1 до 5 включительно с использованием генератора.
set_1 = {x for x in range(1, 6)}
# Вывод: {1, 2, 3, 4, 5}
print(set_1)
# Задание 2: Создайте множество из первых пяти букв английского алфавита с использованием set().
set_2 = set(['a', 'b', 'c', 'd', 'e'])
# Вывод: {'a', 'b', 'c', 'd', 'e'}
print(set_2)
# Задание 3: Создайте множество из квадратов чисел от 1 до 5 с использованием генератора.
set_3 = {x ** 2 for x in range(1, 6)}
# Вывод: {1, 4, 9, 16, 25}
print(set_3)
# Задание 4: Создайте множество из четных чисел от 2 до 10 включительно с использованием ручного создания.
set_4 = {2, 4, 6, 8, 10}
# Вывод: {2, 4, 6, 8, 10}
print(set_4)
# Задание 5: Создайте множество, содержащее элементы общие для двух множеств (1, 2, 3) и (3, 4, 5) с использованием set().
set_5 = {1, 2, 3}.intersection({3, 4, 5})
# Вывод: {3}
print(set_5)
# Задание 6: Создайте множество из уникальных символов в строке "hello" с использованием ручного создания.
set_6 = {'h', 'e', 'l', 'o'}
# Вывод: {'h', 'e', 'l', 'o'}
print(set_6)
# Задание 7: Создайте множество из букв в слове "programming" без повторений с использованием генератора.
set_7 = {char for char in "programming"}
# Вывод: {'p', 'r', 'o', 'g', 'a', 'm', 'i', 'n'}
print(set_7)
# Задание 8: Создайте множество из кубов нечетных чисел от 1 до 10 с использованием генератора и фильтра.
set_8 = {x ** 3 for x in range(1, 11) if x % 2 != 0}
# Вывод: {1, 27, 125, 343, 729}
print(set_8)
# Задание 9: Создайте множество из квадратов чисел от 1 до 10, исключив числа, делящиеся на 3, с использованием генератора и фильтра.
set_9 = {x ** 2 for x in range(1, 11) if x % 3 != 0}
# Вывод: {1, 4, 16, 25, 49, 64, 100}
print(set_9)
Операции над множествами и основные понятия теории множеств
Операции над множествами:
1. Объединение (Union):
- Объединение двух множеств включает все уникальные элементы из обоих множеств.
Пример: } A∪B={1,2,3,4,5}
2. Пересечение (Intersection):
- Пересечение двух множеств включает только те элементы, которые присутствуют в обоих множествах.
Пример:
3. Разность (Difference):
- Разность двух множеств включает все элементы первого множества, которые не присутствуют во втором множестве.
Пример:
4. Симметрическая разность (Symmetric Difference):
- Симметрическая разность включает все элементы, которые присутствуют только в одном из множеств.
Пример:
5. Дополнение (Complement):
- Дополнение множества A относительно универсального множества U включает все элементы U, которые не присутствуют в A.
Пример: U={4,5}
Что такое подмножества, надмножества, пустое множество?
Подмножество множества — это множество, все элементы которого также являются элементами другого множества, называемого «надмножеством».
Формально, множество A является подмножеством множества B, если каждый элемент A также принадлежит множеству B.
Математически, если каждый элемент из множества A также принадлежит множеству B, мы записываем это как или , где символ обозначает «является подмножеством» (включая возможность равенства), а символ ⊂ обозначает «является строгим подмножеством» (без равенства).
Пример: — множество A является подмножеством множества B, потому что все элементы A (1 и 2) также принадлежат множеству B.
Пустое множество (иногда также называемое нулевым множеством) — это множество, не содержащее ни одного элемента.
В математике пустое множество обозначается символом или .
Формально, для любого множества , пустое множество является его подмножеством:
Примеры:
- Пустое множество целых чисел:
- Пустое множество букв в слове «Python»:
- Пустое множество точек на плоскости:
Пустое множество играет важную роль в теории множеств и математике в целом, особенно в контексте определения операций над множествами, таких как объединение, пересечение и разность.
Операции над множествами в Python
- Объединение (|). Объединение двух множеств включает все уникальные элементы из обоих множеств.
set1 = {1, 2, 3} set2 = {3, 4, 5} union_set = set1 | set2 # Результат: {1, 2, 3, 4, 5}
- Пересечение (&). Пересечение двух множеств включает только те элементы, которые присутствуют в обоих множествах.
set1 = {1, 2, 3} set2 = {3, 4, 5} intersection_set = set1 & set2 # Результат: {3}
- Разность (-). Разность двух множеств включает все элементы первого множества, которые не присутствуют во втором множестве.
set1 = {1, 2, 3} set2 = {3, 4, 5} difference_set = set1 - set2 # Результат: {1, 2}
- Симметрическая разность (^). Симметрическая разность включает все элементы, которые присутствуют только в одном из множеств.
set1 = {1, 2, 3} set2 = {3, 4, 5} symmetric_difference_set = set1 ^ set2 # Результат: {1, 2, 4, 5}
- Проверка принадлежности (in). Оператор `in` позволяет проверить, принадлежит ли элемент множеству.
set1 = {1, 2, 3} print(2 in set1) # Вернет True
- Метод add(). Метод `add()` добавляет элемент в множество.
set1 = {1, 2, 3} set1.add(4) # set1 теперь равно {1, 2, 3, 4}
- Метод discard() (и remove()). Метод `discard()` удаляет элемент из множества, если он присутствует. Метод `remove()` также удаляет элемент, но вызывает исключение, если элемент не найден.
set1 = {1, 2, 3, 4} set1.discard(3) # set1 теперь равно {1, 2, 4}
Задания на закрепление
Задание 11: Создайте два множества, состоящих из чисел от 1 до 5 и от 3 до 7. Найдите их объединение.
Задание 12: Создайте множество из букв слова «Python». Добавьте в это множество букву «C». Найдите пересечение с множеством гласных.
Задание 13: Создайте множество, содержащее квадраты четных чисел от 1 до 10. Найдите симметрическую разность с множеством кубов нечетных чисел от 1 до 9.
Задание 14: Создайте множество, представляющее увлечения студента A, и множество увлечений студента B. Найдите, есть ли у них общие увлечения.
Задание 15: Создайте множество, представляющее категории товаров в магазине A, и множество категорий товаров в магазине B. Найдите общие категории.
Задание 16: Создайте множество из букв слова «programming». Удалите гласные из этого множества.
Задание 17: Создайте два множества, представляющих круги друзей у человека A и B. Найдите, у кого больше друзей.
Задание 18: Создайте множество, представляющее собой первые 10 простых чисел. Добавьте в него простые числа от 11 до 20.
Задание 19: Создайте множество, содержащее различные цвета, предпочтительные для студента A и студента B. Найдите пересечение этих множеств.
Задание 20: Создайте множество, представляющее собой уникальные слова в предложении. Добавьте в это множество слова из другого предложения. Найдите количество слов в итоговом множестве.
# Задание 11
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
union_result = set1 | set2
# Вывод: {1, 2, 3, 4, 5, 6, 7}
# Задание 12
word_set = set("Python")
word_set.add("C")
vowels_set = {'a', 'e', 'i', 'o', 'u'}
intersection_result = word_set & vowels_set
# Вывод: {'o'}
# Задание 13
even_squares = {x**2 for x in range(1, 11) if x % 2 == 0}
odd_cubes = {x**3 for x in range(1, 10) if x % 2 != 0}
symmetric_difference_result = even_squares ^ odd_cubes
# Вывод: {8, 64, 216, 512, 1000}
# Задание 14
student_a_hobbies = {'reading', 'coding', 'photography'}
student_b_hobbies = {'coding', 'gaming', 'cooking'}
common_hobbies = student_a_hobbies & student_b_hobbies
# Вывод: {'coding'}
# Задание 15
store_a_categories = {'electronics', 'clothing', 'books'}
store_b_categories = {'books', 'kitchen', 'toys'}
common_categories = store_a_categories & store_b_categories
# Вывод: {'books'}
# Задание 16
word_set_programming = set("programming")
vowels_removed = word_set_programming - {'a', 'e', 'i', 'o', 'u'}
# Вывод: {'p', 'r', 'g', 'm', 'n'}
# Задание 17
friends_a = {'Alice', 'Bob', 'Charlie'}
friends_b = {'Alice', 'David', 'Eva'}
more_friends = max(len(friends_a), len(friends_b))
# Вывод: 3
# Задание 18
prime_numbers_1_10 = {2, 3, 5, 7}
prime_numbers_11_20 = {11, 13, 17, 19}
prime_numbers_1_20 = prime_numbers_1_10 | prime_numbers_11_20
# Вывод: {2, 3, 5, 7, 11, 13, 17, 19}
# Задание 19
student_a_colors = {'red', 'green', 'blue'}
student_b_colors = {'blue', 'yellow', 'green'}
common_colors = student_a_colors & student_b_colors
# Вывод: {'green', 'blue'}
# Задание 20
sentence1 = "Python is an amazing programming language."
sentence2 = "I enjoy learning Python programming."
words_set = set(sentence1.split()) | set(sentence2.split())
number_of_words = len(words_set)
# Вывод: 10
Особенности множеств в Python
Множества в Python отличаются от других структур хранения, таких как списки, кортежи и строки, в нескольких ключевых аспектах:
1. Неупорядоченность:
- Элементы в множестве не имеют определенного порядка. В отличие от списков, где порядок элементов важен, множества не поддерживают индексацию или извлечение элементов по порядку.
2. Уникальность элементов:
- В множестве каждый элемент должен быть уникальным. Если вы добавляете элемент, который уже присутствует в множестве, он не добавится второй раз. Это отличие от списков, где дубликаты разрешены.
3. Изменяемость:
- Множества являются изменяемыми, что означает, что их можно изменять, добавлять и удалять элементы после их создания. В отличие от кортежей, которые являются неизменяемыми, множества могут быть модифицированы.
4. Отсутствие индексации:
- Множества не поддерживают доступ к элементам по индексу, так как они не имеют определенного порядка. Операции, такие как индексация и срезы, которые доступны в списках и кортежах, не применимы к множествам.
5. Математические операции:
- Множества поддерживают математические операции, такие как объединение, пересечение, разность и симметрическая разность, что делает их полезными для решения задач, связанных с множествами и логикой множеств.
6. Поддержка проверки принадлежности:
- Множества предоставляют эффективную проверку принадлежности элемента, что позволяет быстро определять, содержится ли элемент в множестве.
Методы множеств
- add(). Метод
add()
добавляет элемент в множество. - remove(). Метод
remove()
удаляет указанный элемент из множества. Если элемент не найден, вызывается исключениеKeyError
. - discard(). Метод
discard()
удаляет указанный элемент из множества, если он присутствует. Если элемент не найден, метод ничего не делает и не вызывает ошибку. - pop(). Метод
pop()
удаляет и возвращает один произвольный элемент из множества. Если множество пусто, вызывается исключениеKeyError
. - clear(). Метод
clear()
удаляет все элементы из множества, оставляя пустое множество. - copy(). Метод
copy()
создает копию множества. - union(). Метод
union()
возвращает новое множество, являющееся объединением текущего множества и других указанных множеств. - intersection(). Метод
intersection()
возвращает новое множество, содержащее элементы, присутствующие в обоих множествах. - difference(). Метод
difference()
возвращает новое множество, содержащее элементы, присутствующие только в текущем множестве, но не в других указанных множествах. - symmetric_difference(). Метод
symmetric_difference()
возвращает новое множество, содержащее элементы, присутствующие только в одном из множеств.
- Примечание. Когда используются методы изменения множества (например,
add()
,remove()
), они изменяют текущее множество и не возвращают новое множество. Методы, такие какunion()
,intersection()
,difference()
,symmetric_difference()
, создают новые множества, не изменяя исходные.
- Примечание. Когда используются методы изменения множества (например,
- isdisjoint(). Метод
isdisjoint()
проверяет, является ли множество непересекающимся с другим множеством. Если нет общих элементов, метод возвращаетTrue
, иначеFalse
. - issubset(). Метод
issubset()
проверяет, является ли текущее множество подмножеством другого множества. Если все элементы текущего множества присутствуют в другом, метод возвращаетTrue
, иначеFalse
. - issuperset(). Метод
issuperset()
проверяет, является ли текущее множество надмножеством другого множества. Если все элементы другого множества присутствуют в текущем, метод возвращаетTrue
, иначеFalse
. - update(). Метод
update()
обновляет текущее множество, добавляя элементы из других множеств или итерируемых объектов. - intersection_update(). Метод
intersection_update()
обновляет текущее множество, оставляя в нем только элементы, присутствующие в других указанных множествах. - difference_update(). Метод
difference_update()
обновляет текущее множество, удаляя из него элементы, присутствующие в других указанных множествах. - symmetric_difference_update(). Метод
symmetric_difference_update()
обновляет текущее множество, оставляя в нем элементы, присутствующие только в одном из множеств.
Примечание. Методы, оканчивающиеся на
_update()
, изменяют текущее множество в процессе выполнения, а не создают новое множество. Они являются «in-place» версиями соответствующих операций над множествами.
Задания на закрепление.
Задание 21: Создайте два множества с числами от 1 до 5 и от 3 до 7. Используя методы множеств, найдите и выведите их объединение.
Задание 22: Создайте множество из гласных букв английского алфавита. Добавьте в это множество гласные буквы из слова «Python». Выведите результат.
Задание 23: Создайте два множества с четными числами до 10 и нечетными числами до 9. С помощью метода найдите и выведите их пересечение.
Задание 24: Создайте множество цветов радуги. Добавьте в него цвета, предпочитаемые вашим другом. Найдите общие цвета и выведите результат.
Задание 25: Создайте множество, представляющее увлечения студента A. Добавьте в него увлечения студента B. Определите, является ли множество A подмножеством множества B.
Задание 26: Создайте множество из букв слова «programming». Удалите из него буквы слова «python». Выведите результат.
Задание 27: Создайте два множества с днями недели. Используя методы, определите, является ли одно из множеств надмножеством другого.
Задание 28: Создайте множество из первых 5 простых чисел. Добавьте в него следующие 5 простых чисел. Используя методы множеств, удалите из него четные числа.
Задание 29: Создайте множество из слов вашего любимого стихотворения. Используя методы, определите количество уникальных слов в стихотворении.
Задание 30: Создайте множество, представляющее категории товаров в магазине A. Обновите его, добавив категории товаров из магазина B. Выведите результат.
# Задание 21
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
union_result = set1.union(set2)
# Вывод: {1, 2, 3, 4, 5, 6, 7}
# Задание 22
vowels_set = set("aeiou")
vowels_set.update(set("Python"))
# Вывод: {'a', 'e', 'i', 'o', 'u', 'P', 'y', 't', 'h', 'n'}
# Задание 23
even_set = {x for x in range(2, 11, 2)}
odd_set = {x for x in range(1, 10, 2)}
intersection_result = even_set.intersection(odd_set)
# Вывод: {2, 4, 6, 8}
# Задание 24
rainbow_colors = {'red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'}
friend_colors = {'yellow', 'green', 'blue', 'purple'}
common_colors = rainbow_colors.intersection(friend_colors)
# Вывод: {'blue', 'green', 'yellow'}
# Задание 25
hobbies_a = {'reading', 'coding', 'photography'}
hobbies_b = {'coding', 'gaming', 'cooking'}
is_subset = hobbies_a.issubset(hobbies_b)
# Вывод: False
# Задание 26
word_set_programming = set("programming")
word_set_python = set("python")
result_set = word_set_programming - word_set_python
# Вывод: {'r', 'g', 'm', 'r'}
# Задание 27
days_set1 = {'Monday', 'Tuesday', 'Wednesday'}
days_set2 = {'Tuesday', 'Wednesday', 'Thursday'}
is_superset = days_set1.issuperset(days_set2)
# Вывод: False
# Задание 28
prime_numbers_1_5 = {2, 3, 5}
prime_numbers_6_10 = {7}
prime_numbers_1_10 = prime_numbers_1_5.union(prime_numbers_6_10)
prime_numbers_1_10.difference_update({2, 4, 6, 8, 10})
# Вывод: {3, 5, 7}
# Задание 29
poem_set = {'I', 'love', 'Python', 'programming', 'with', 'all', 'my', 'heart'}
unique_words_count = len(poem_set)
# Вывод: 8
# Задание 30
store_a_categories = {'electronics', 'clothing', 'books'}
store_b_categories = {'books', 'kitchen', 'toys'}
store_a_categories.update(store_b_categories)
# Вывод: {'electronics', 'clothing', 'books', 'kitchen', 'toys'}
Очистка списка от дубликатов с помощью множества
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(my_list))
Однако следует учесть, что это не сохранит порядок элементов, так как множества в Python не сохраняют порядок вставки.
Агрегатные функции и сортировка в множествах
- len() — определение размера множества:
my_set = {1, 2, 3, 4, 5} size = len(my_set)
- min() и max() — нахождение минимального и максимального элемента:
my_set = {1, 2, 3, 4, 5} minimum = min(my_set) maximum = max(my_set)
- sum() — вычисление суммы элементов (работает только для числовых значений)
numeric_set = {1, 2, 3, 4, 5} total = sum(numeric_set)
Сортировка элементов множества:
- sorted() — получение отсортированного списка:
my_set = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5} sorted_list = sorted(my_set)
- sorted() с ключом сортировки:
my_set = {'apple', 'banana', 'kiwi', 'orange'} sorted_list_by_length = sorted(my_set, key=len)
- Обратная сортировка:
my_set = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5} reverse_sorted_list = sorted(my_set, reverse=True)
Примечание:
- Поскольку множества в Python являются неупорядоченными коллекциями, сами по себе они не поддерживают индексацию и не могут быть отсортированы. Однако, с помощью функции
sorted()
, мы можем получить отсортированный список из элементов множества. - Если порядок элементов важен, лучше использовать другие структуры данных, такие как список.
Перебор элементов множества
Перебор элементов множества в Python можно выполнить с использованием цикла for
. Поскольку множества в Python являются итерируемыми объектами, цикл for
позволяет легко перебирать все элементы множества. Вот пример:
my_set = {1, 2, 3, 4, 5}
# Простой перебор элементов множества
for element in my_set:
print(element)
Этот код выведет все элементы множества my_set
в произвольном порядке, так как множества в Python не сохраняют порядок вставки элементов.
Если вам необходимо перебрать элементы в отсортированном порядке, вы можете использовать функцию sorted()
внутри цикла:
my_set = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5}
# Перебор элементов множества в отсортированном порядке
for element in sorted(my_set):
print(element)
Этот код выведет элементы множества my_set
в порядке сортировки.
Если вам нужно выполнить какие-то действия с элементами множества в процессе перебора, вы можете вставить код внутри цикла. Например:
my_set = {1, 2, 3, 4, 5}
# Перебор элементов множества с выполнением действий
for element in my_set:
squared = element ** 2
print(f"The square of {element} is {squared}")
Этот код выведет квадрат каждого элемента множества my_set
.
frozen_set
frozenset
в Python — это неизменяемая (immutable) версия множества set
. Основное отличие между set
и frozenset
заключается в том, что frozenset
не может быть изменен после создания, тогда как set
является изменяемым типом данных.
Основные отличия:
- Изменяемость:
set
является изменяемым типом данных, и его можно изменять, добавлять и удалять элементы.frozenset
является неизменяемым, и после создания нельзя изменить его содержимое.
- Применение:
set
обычно используется там, где требуется изменяемое множество. Например, для динамического добавления и удаления элементов в процессе выполнения программы.frozenset
применяется там, где нужно гарантировать, что множество останется неизменным, например, в качестве ключа словаря.
Примеры использования
Использование set
:
my_set = {1, 2, 3, 4}
my_set.add(5)
my_set.remove(2)
Использование frozenset
:
my_frozenset = frozenset([1, 2, 3, 4])
# Нельзя добавить или удалить элементы:
# my_frozenset.add(5) # Вызовет ошибку AttributeError
# my_frozenset.remove(2) # Вызовет ошибку AttributeError
Когда использовать set
и frozenset
:
- Используйте
set
, когда вам нужно изменяемое множество и вы планируете добавлять или удалять элементы в процессе выполнения программы. - Используйте
frozenset
, когда вы хотите создать неизменяемое множество, которое может быть использовано, например, как ключ в словаре или элемент в другом множестве.frozenset
также полезен в тех случаях, когда нужно гарантировать, что множество не будет изменено случайно или внутри функции.
Задания для тренировки на множества
Задание 31: Создайте множество с буквами слова «apple». Выведите уникальные буквы в алфавитном порядке.
Задание 32: Создайте два множества с числами от 1 до 5 и от 3 до 7. Используя методы множеств, найдите и выведите их симметрическую разность.
Задание 33: Создайте множество из всех уникальных слов в предложении «Python is powerful and Python is easy to learn.» Выведите количество уникальных слов.
Задание 34: Создайте множество с цифрами от 1 до 10. Удалите из множества числа, кратные 3.
Задание 35: Создайте множество, представляющее собой квадраты первых 10 натуральных чисел. Найдите пересечение этого множества с множеством кубов чисел от 1 до 10.
Задание 36: Создайте два множества с днями недели. Найдите и выведите дни, которые присутствуют только в одном из множеств.
Задание 37: Создайте множество из слов «apple», «orange», «banana». Добавьте к нему слова «grape» и «kiwi». Найдите общие буквы в этих словах.
Задание 38: Создайте два множества с годами рождения друзей A и B. Найдите и выведите годы, в которые родились только друзья из множества A.
Задание 39: Создайте множество с буквами алфавита. Добавьте к нему гласные буквы из слова «Python». Найдите разницу между множеством алфавита и новым множеством.
Задание 40: Создайте множество с числами от 1 до 10. Используя методы множеств, выделите нечетные числа.
Задание 41: Создайте два множества с книгами в библиотеке A и B. Найдите и выведите книги, которые есть только в одной из библиотек.
Задание 42: Создайте множество из слов «apple», «banana», «kiwi». Удалите из множества слово, которого нет в предложении «I like banana and kiwi.»
Задание 43: Создайте два множества с языками программирования, которые знают студенты A и B. Найдите и выведите языки, которые знают оба студента.
Задание 44: Создайте множество из букв слова «education». Используя методы множеств, найдите и выведите гласные буквы.
Задание 45: Создайте два множества с категориями товаров в магазинах A и B. Найдите и выведите общие категории товаров.
# Задание 31
word_set = set("apple")
sorted_unique_letters = sorted(word_set)
# Вывод: ['a', 'e', 'l', 'p']
# Задание 32
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
symmetric_difference_result = set1.symmetric_difference(set2)
# Вывод: {1, 2, 6, 7}
# Задание 33
sentence = "Python is powerful and Python is easy to learn."
unique_words_set = set(sentence.split())
unique_words_count = len(unique_words_set)
# Вывод: 8
# Задание 34
numbers_set = set(range(1, 11))
numbers_set.difference_update({3, 6, 9})
# Вывод: {1, 2, 4, 5, 7, 8, 10}
# Задание 35
squares_set = {x**2 for x in range(1, 11)}
cubes_set = {x**3 for x in range(1, 11)}
intersection_result = squares_set.intersection(cubes_set)
# Вывод: {1, 8, 27, 64, 125}
# Задание 36
days_set1 = {'Monday', 'Tuesday', 'Wednesday', 'Thursday'}
days_set2 = {'Wednesday', 'Thursday', 'Friday'}
unique_days = days_set1.symmetric_difference(days_set2)
# Вывод: {'Monday', 'Tuesday', 'Friday'}
# Задание 37
fruits_set = {'apple', 'orange', 'banana'}
fruits_set.update({'grape', 'kiwi'})
common_letters = set.intersection(*map(set, fruits_set))
# Вывод: {'a'}
# Задание 38
years_a = {1990, 1995, 2000}
years_b = {1995, 2000, 2005}
unique_years = years_a.difference(years_b)
# Вывод: {1990}
# Задание 39
alphabet_set = set(chr(i) for i in range(97, 123))
python_set = set("Python")
difference_result = alphabet_set.difference(python_set)
# Вывод: {'j', 'v', 'l', 'h', 's', 'r', 'i', 'm', 'g', 'f', 'w', 'o', 'k', 'd', 'u', 'n', 'a', 'c', 'b', 'y', 'z', 'e', 'x', 't', 'q'}
# Задание 40
numbers_set = set(range(1, 11))
odd_numbers = numbers_set.difference({2, 4, 6, 8, 10})
# Вывод: {1, 3, 5, 7, 9}
# Задание 41
books_a = {'Python Crash Course', 'Clean Code', 'Algorithm Design Manual'}
books_b = {'Clean Code', 'Design Patterns', 'Code Complete'}
unique_books = books_a.symmetric_difference(books_b)
# Вывод: {'Design Patterns', 'Algorithm Design Manual', 'Python Crash Course', 'Code Complete'}
# Задание 42
words_set = {'apple', 'banana', 'kiwi'}
sentence = "I like banana and kiwi."
words_to_remove = words_set.difference(set(sentence.split()))
words_set.difference_update(words_to_remove)
# Вывод: {'banana', 'kiwi'}
# Задание 43
languages_a = {'Python', 'JavaScript', 'Java'}
languages_b = {'Java', 'C++', 'Ruby'}
common_languages = languages_a.intersection(languages_b)
# Вывод: {'Java'}
# Задание 44
letters_set = set("education")
vowels_set = letters_set.intersection({'a', 'e', 'i', 'o', 'u'})
# Вывод: {'e', 'i', 'o', 'a'}
# Задание 45
categories_a = {'electronics', 'clothing', 'books'}
categories_b = {'books', 'kitchen', 'toys'}
common_categories = categories_a.intersection(categories_b)
# Вывод: {'books'}
Задания повышенной сложности
Задание 46: Поиск анаграмм
Создайте программу, которая принимает на вход две строки и определяет, являются ли они анаграммами друг друга. Анаграммы — это слова или фразы, образованные путем перестановки букв другого слова или фразы. Например, «listen» и «silent» — анаграммы. Решение должно использовать множества для эффективного сравнения символов.
Задание 47: Пересечение множеств в файловой системе
Создайте программу, которая находит и выводит на экран все общие файлы (или файлы с одинаковым содержимым) в двух указанных директориях. Это задание требует обхода файловой системы, сравнения содержимого файлов и использования множеств для эффективного хранения данных о файлах. Обратите внимание на эффективность выполнения, особенно при работе с большим количеством файлов.
Индивидуальное и групповое обучение «Python Junior»
Если вы хотите научиться программировать на Python, могу помочь. Запишитесь на мой курс «Python Junior» и начните свой путь в мир ИТ уже сегодня!
Контакты
Для получения дополнительной информации и записи на курсы свяжитесь со мной:
Телеграм: https://t.me/Vvkomlev
Email: victor.komlev@mail.ru
Объясняю сложное простыми словами. Даже если вы никогда не работали с ИТ и далеки от программирования, теперь у вас точно все получится! Проверено десятками примеров моих учеников.
Гибкий график обучения. Я предлагаю занятия в мини-группах и индивидуально, что позволяет каждому заниматься в удобном темпе. Вы можете совмещать обучение с работой или учебой.
Практическая направленность. 80%: практики, 20% теории. У меня множество авторских заданий, которые фокусируются на практике. Вы не просто изучаете теорию, а сразу применяете знания в реальных проектах и задачах.
Разнообразие учебных материалов: Теория представлена в виде текстовых уроков с примерами и видео, что делает обучение максимально эффективным и удобным.
Понимаю, что обучение информационным технологиям может быть сложным, особенно для новичков. Моя цель – сделать этот процесс максимально простым и увлекательным. У меня персонализированный подход к каждому ученику. Максимальный фокус внимания на ваши потребности и уровень подготовки.