Что такое set python
33. Множества в Python. Тип данных set

34. Словари Python. Операции и методы словаря

35. 4 Ситуации, где полезно использовать словарь

36. Как отсортировать словарь в Python

37. Кортежи (tuple). Операции и методы кортежей

38. Функции (def). Определение и вызов функции

39. Зачем нужны функции в программировании

40. Возвращаемое значение функции. Оператор return

41. Область видимости: локальная, глобальная и встроенная.
Множество (set)
Множество (set) — неупорядоченная коллекция, хранящая набор уникальных значений и поддерживающая для них операции добавления, удаления и определения вхождения.
Также объект множество в Python поддерживает операции, аналогичные операциям с математическими множествами: объединение, пересечение, симметричная разность и вычитание множеств
Создание множества
Множество создается перечислением через запятую всех элементов внутри фигурных скобках.
>>> a = >>> a
В случае, если имеются повторяющиеся элементы внутри фигурных скобок, дубли во множестве все равно исчезнут. Множество не терпит среди элементов повторения.
>>> b = >>> b
Пустое множество создается при помощи функции set()
>>> c = set() >>> c set()
Также при помощи функции set() можно создавать множества из других объектов. Если передать строку, то получим множество из символов этой строки.
>>> d = set('abracadabra') >>> d
Также можно передавать функции set() списки и функцию range().
>>> e = set([1,3,3,1,2,3,3,7]) >>> e >>> f = set(range(1,4)) >>> f
Добавление элемента в множество
Первый способ добавить элемент в множество это вызвать метод add(). При попытке добавить уже существующий элемент во множество никаких ошибок не возникнет
>>> a = >>> a >>> a.add(4) >>> a >>> a.add(3) >>> a
Второй способ добавить элемент в множество это вызвать метод update() и передать ему итерируемый объект: список, строку, range() или множество. Метод update() будет поочередно добавлять каждый элемент итерируемого объекта внутрь множества.
>>> a >>> a.update([1,2,3,4]) >>> a >>> a.update('hi') >>> a >>> a.update(range(0,6)) >>> a
Удаление элемента из множество
Первый способ удалить элемент из множества это вызвать метод discard(value) и передать ему значение, которое хотите удалить. В случае, если в множестве нет значения, исключений не будет.
>>> a >>> a.discard(3) >>> a >>> a.discard(4) >>> a
Второй способ удалить элемент — это вызвать метод remove(value). В случае, если указанного значения в множестве нет, возбуждается исключение KeyError.
>>> a >>> a.remove(2) >>> a >>> a.remove(5) Traceback (most recent call last): File "", line 1, in a.remove(5) KeyError: 5
Третий способ удалить элемент — вызвать метод pop(). Т.к. множество является неупорядоченной коллекцией, данный метод удалит случайный элемент. При попытке удалить элемент из пустого множества возникнет исключение KeyError.
>>> a >>> a.pop() 1 >>> a.pop() 2 >>> a.pop() 3 >>> a.pop() Traceback (most recent call last): File "", line 1, in a.pop() KeyError: 'pop from an empty set'
Операции над множеством
Нахождение длины
>>> a = >>> len(a) 3 >>> len(set()) 0 >>> len(set([1,2,2])) 2
Проверка вхождения элемента во множество
>>> a >>> 2 in a True >>> 4 in a False >>> 5 not in a True
Пересечение множеств
При помощи оператора & можно выполнить пересечение множеств. В результат попадут те элементы, которые одновременно принадлежат двум множествам. При этом сами множества не меняются. Если нужно изменить само множество используйте эту операцию с присвоением &=.
>>> a = >>> b = >>> a & b >>> a,b (, ) >>> a &= b >>> a,b (, )
Объединение множеств
При помощи оператора | можно выполнить объединение множеств. В результат попадут те элементы, которые принадлежат хотя бы одному из множеств. При этом сами множества не меняются. Если нужно изменить само множество используйте эту операцию с присвоением |=.
>>> a = >>> b = >>> a | b >>> a,b (, ) >>> a |= b >>> a,b (, )
Вычитание множеств
При помощи оператора — можно выполнить вычитание множеств. В результат попадут только те элементы, которые принадлежат первому множеству за исключение тех, которые входят во второе.
>>> a = >>> b = >>> a - b >>> b - a >>> a,b (, ) >>> a -= b >>> a,b (, )
Множество (set) в Python
Множество (set) в Python — это набор уникальных данных. Элементы множества не могут дублироваться. Множество может содержать любое количество элементов, и они могут быть разных типов (int, float, кортеж, строки и т.д.). Но множество не может иметь изменяемые элементы, такие как списки, словари или другие множества. Для создания множества все элементы помещают внутри фигурных скобок <> , разделенных запятыми.
Создание множества в Python
В Python для создания множества все элементы помещают внутри фигурных скобок <> , разделенных запятыми.
Множество может содержать любое количество элементов, и они могут быть разных типов (int, float, кортеж, строки и т.д.). Но множество не может иметь изменяемые элементы, такие как списки, словари или другие множества.
# Множество целочисленного типа
student_id = < 112 , 114 , 116 , 118 , 115 >
print ( ‘Student ID:’ , student_id )
# Множество строчного типа
vowel_letters = < 'a' , 'e' , 'i' , 'o' , 'u' >
print ( ‘Vowel Letters:’ , vowel_letters )
# Множество смешанного типа
print ( ‘Set of mixed data types:’ , mixed_set )
Здесь мы создали различные типы множеств, поместив все элементы внутри фигурных скобок <> .
Примечание: При выполнении этого кода вы можете получить результат с элементами в другом порядке. Это происходит потому, что множество не имеет определенного порядка.
Создание пустого множества — дело нехитрое. Пустые фигурные скобки <> создадут пустой словарь в Python. А для создания пустого множества нужно использовать функцию set() без каких-либо аргументов. Например:
# Создание пустого множество
empty_set = set ( )
# Создание пустого словаря
empty_dictionary = < >
# Проверка типа данных empty_set
print ( ‘Data type of empty_set:’ , type ( empty_set ) )
# Проверка типа данных dictionary_set
print ( ‘Data type of empty_dictionary’ , type ( empty_dictionary ) )
Data type of empty_set:
Data type of empty_dictionary
empty_set — пустое множество, созданное с помощью set();
empty_dictionary — пустой словарь, созданный с помощью <> .
Наконец, мы использовали функцию type() для определения типа данных empty_set и empty_dictionary .
Дублирование элементов в множестве
Давайте посмотрим, что произойдет, если мы попытаемся включить в набор дублирующиеся элементы.
print ( numbers )
Здесь мы видим, что в множестве нет одинаковых элементов, так как оно не может содержать дубли.
Добавление, обновление и удаление элементов множества в Python
Множества изменяемые. Однако, поскольку они неупорядочены, индексирование не имеет смысла. Мы не можем получить доступ или изменить элемент множества с помощью индексации или среза. Тип данных set не поддерживает этого.
Добавление элемента в множество
В Python метод add() используется для добавления элемента в множество. Например:
print ( ‘Initial Set:’ , numbers )
# Использование метода add()
numbers . add ( 32 )
print ( ‘Updated Set:’ , numbers )
Initial Set:
Updated Set:
Здесь мы создали множество с именем numbers . Обратите внимание на строку:
numbers . add ( 32 )
Здесь add() добавляет значение 32 к нашему множеству.
Обновление множества
В Python метод update() используется для обновления множества элементами других типов данных (списки, кортежи и т.д.). Например:
tech_companies = [ ‘apple’ , ‘google’ , ‘apple’ ]
companies . update ( tech_companies )
print ( companies )
Здесь все уникальные элементы tech_companies добавляются в множество companies .
Удаление элемента из множества
В Python метод discard() используется для удаления указанного элемента из множества. Например:
print ( ‘Initial Set:’ , languages )
# Удаление ‘Java’ из множества
removedValue = languages . discard ( ‘Java’ )
print ( ‘Set after remove():’ , languages )
Здесь мы использовали метод discard(), чтобы удалить ‘Java’ из множества language .
Итерация по множеству в Python
# Используем цикл for для доступа к каждому элементу
for fruit in fruits :
print ( fruit )
Определение количества элементов множества
В Python метод len() используется для определения количества элементов, присутствующих в множестве. Например:
even_numbers = < 2 , 4 , 6 , 8 >
print ( ‘Set:’ , even_numbers )
print ( ‘Total Elements:’ , len ( even_numbers ) )
Операции с множествами в Python
Python предоставляет различные встроенные методы для выполнения математических операций с множествами, таких как объединение, пересечение, разность и симметрическая разность.
Объединение множеств

Объединение двух множеств A и B включает в себя все элементы множеств A и B.
Для выполнения операции объединения множеств используется оператор | или метод union() . Например:
# Первое множество
# Второе множество
# Выполнение операции объединения с помощью |
print ( ‘Union using |:’ , A | B )
# Выполнение операции объединения с помощью union()
print ( ‘Union using union():’ , A . union ( B ) )
Union using |:
Union using union():
Примечание: A | B и union() эквивалентны операции множества A ⋃ B .
Пересечение множеств

Пересечение двух множеств A и B включает в себя общие элементы между множествами A и B.
В Python для выполнения операции пересечения множеств используется оператор & или метод intersection() . Например:
# Первое множество
# Второе множество
# Выполнение операции пересечения с помощью &
print ( ‘Intersection using &:’ , A & B )
# Выполнение операции пересечения с помощью intersection()
print ( ‘Intersection using intersection():’ , A . intersection ( B ) )
Intersection using &:
Intersection using intersection():
Примечание: A & B и intersection() эквивалентны операции множества A ⋂ B .
Разность множеств

Разница между двумя множествами A и B включает в себя элементы множества A, которых нет в множестве B.
В Python для выполнения операции разности между двумя множествами используется оператор — или метод difference() . Например:
# Первое множество
# Второе множество
# Выполнение операции разности с помощью —
print ( ‘Difference using -:’ , A — B )
# Выполнение операции разности с помощью difference()
print ( ‘Difference using difference():’ , A . difference ( B ) )
Difference using -:
Difference using difference():
Примечание: A — B и A.difference(B) эквивалентны операции множества A — B .
Симметрическая разность множеств

Симметрическая разность двух множеств A и B включает в себя все элементы A и B без общих элементов.
В Python для выполнения операции симметрической разности между двумя множествами используется оператор ^ или метод symmetric_difference() . Например:
# Первое множество
# Второе множество
# Выполнение операции симметрической разности с помощью &
print ( ‘using ^:’ , A ^ B )
# Выполнение операции симметрической разности с помощью symmetric_difference()
print ( ‘using symmetric_difference():’ , A . symmetric_difference ( B ) )
Проверка, являются ли два множества равными
В Python оператор == используется, чтобы проверить, равны ли два множества. Например:
# Первое множество
# Второе множество
# Проверяем, равны ли два множества
print ( ‘Set A and Set B are equal’ )
print ( ‘Set A and Set B are not equal’ )
Set A and Set B are equal
Здесь A и B имеют одинаковые элементы, поэтому условие
вычисляется в True . Следовательно, выполняется print(‘Set A and Set B are equal’) внутри if.
Методы для работы с множествами в Python
| Функции | Описание |
| add() | Добавляет элемент к множеству. |
| all() | Возвращает True, если все элементы множества True (или если множество пустое). |
| any() | Возвращает True, если хоть один из элементов множества True. Если множество пустое, возвращается False. |
| clear() | Удаляет все элементы из множества. |
| copy() | Возвращает копию множества. |
| difference() | Возвращает разность двух или более множеств в виде нового множества. |
| difference_update() | Удаляет все элементы другого множества из текущего множества. |
| discard() | Удаляет элемент из множества, если он является его частью. (Ничего не делает, если элемент не находится в множестве) |
| enumerate() | Возвращает объект перечисления, который содержит индекс и значение для всех элементов множества в виде пары. |
| intersection() | Возвращает пересечение двух множеств в виде нового множества. |
| intersection_update() | Обновляет множество пересечением себя и другого множества. |
| isdisjoint() | Возвращает True, если два множества не имеют пересечение. |
| issubset() | Возвращает True, если другое множество содержит текущее множество. |
| issuperset() | Возвращает True, если текущее множество содержит другое множество. |
| len() | Возвращает длину (количество элементов) в множестве. |
| max() | Возвращает самый большой элемент в множестве. |
| min() | Возвращает наименьший элемент в множестве. |
| pop() | Удаляет и возвращает произвольный элемент множества. Вызывает ошибку KeyError, если множество пустое. |
| remove() | Удаляет элемент из множества. Если элемент не является членом множества, возникает ошибка KeyError. |
| sorted() | Возвращает новый отсортированный список из элементов множества (но не выполняет сортировку). |
| sum() | Возвращает сумму всех элементов множества. |
| symmetric_difference() | Возвращает симметрическую разность двух множеств в виде нового множества. |
| symmetric_difference_update() | Обновляет множество с симметрической разностью себя и другого. |
| union() | Возвращает объединение множеств в новом множестве. |
| update() | Обновляет множество с объединением себя и других. |
Что такое set python

Неизменяемое множество frozenset , в отличие от set , может входить в изменяемое множество:
>>> set_a = >>> set_b = frozenset() >>> set_c = Traceback (most recent call last): File "", line 1, in TypeError: unhashable type: 'set' >>> set_c = >>> print(set_c) <8, 9, frozenset(), 7>
3. Элементы во множествах хранятся в неупорядоченном виде, и к ним нельзя обратиться по индексу:
>>> set_a = set('123') >>> print(set_a) >>> print(set[1]) Traceback (most recent call last): File "", line 1, in TypeError: 'type' object is not subscriptable
4. Поскольку элементы множества не имеют индексов, срезы при работе с set тоже использовать нельзя:
>>> set_a = >>> print(set_a[2:5]) Traceback (most recent call last): File "", line 1, in TypeError: 'set' object is not subscriptable
5. Все элементы множества – уникальны, повторяющиеся данные в set игнорируются; это свойство множеств может пригодиться для решения практических задач:
>>> my_set = >>> print(my_set)
6. Множества не поддерживают конкатенацию и повторение:
>>> set_a = >>> set_b = >>> print(set_a + set_b) Traceback (most recent call last): File "", line 1, in TypeError: unsupported operand type(s) for +: 'set' and 'set' >>> print(set_a * 2) Traceback (most recent call last): File "", line 1, in TypeError: unsupported operand type(s) for *: 'set' and 'int'
7. Множества занимают значительно больший объем памяти, нежели списки и кортежи. По этой причине лучше не использовать множества для решения задач с лимитом на объем памяти:
>>> from sys import getsizeof >>> number = 100500 >>> my_list = list(range(number)) >>> my_tuple = tuple(range(number)) >>> my_set = set(range(number)) >>> my_list_size = getsizeof(my_list) >>> my_tuple_size = getsizeof(my_tuple) >>> my_set_size = getsizeof(my_set) >>> print(f'Размер списка: Мб') Размер списка: 0.431 Мб >>> print(f'Размер кортежа: Мб') Размер кортежа: 0.383 Мб >>> print(f'Размер множества: Мб') Размер множества: 2.0 Мб
8. Хотя множества занимают гораздо больший объем памяти, чем списки и кортежи, работают они гораздо быстрее. Этот код сравнивает время, затраченное на проведение операции над списком, кортежем и множеством с одинаковым количеством элементов:
from time import time number = 15000 my_set = set(range(number)) my_list = list(range(number)) my_tuple = tuple(range(number)) t = time() for i in range(number): if i in my_list: pass print(f"Операция со списком: секунд") my_list.clear() t = time() for i in range(number): if i in my_tuple: pass print(f"Операция с кортежeм: секунд") t = time() for i in range(number): if i in my_set: pass print(f"Операция со множеством: секунд") my_set.clear()
Операция со списком: 1.810847282409668 секунд Операция с кортежeм: 1.6490623950958252 секунд Операция со множеством: 0.0013110637664794922 секунд
Создание множеств в Python
Пустое множество можно создать только одним способом, с помощью set() :
>>> my_set = set() >>> print(type(my_set))
Попытка создать пустое множество с помощью фигурных скобок <> обречена на провал – вместо set будет создан словарь dict :
>>> my_set = <> >>> print(type(my_set))
Множество с данными можно создать несколькими способами.
Способ 1: Перечисление элементов
Для создания множества нужные элементы перечисляют через запятую в фигурных скобках:
>>> set_a = >>> set_b = >>> set_c = >>> set_d =
Способ 2: Преобразование других типов данных
Множество можно создать на основе символов либо слов строки:
>>> print(set('абырвалг')) >>> print(set('Множества в Python'.split()))
Множество из списка:
>>> print(set([3, 6, 4, 5, 5]))
Множество на основе кортежа:
>>> print(set(('красный', 'синий', 'зеленый')))
При создании множества из dict от словаря останутся только ключи:
>>> print(set())
В отличие от символов строк, число нельзя автоматически разбить на отдельные цифры и преобразовать во множество напрямую:
>>> print(set(123)) Traceback (most recent call last): File "", line 1, in TypeError: 'int' object is not iterable
Но с применением str преобразование проходит без ошибок:
>>> print(set(str(1812)))
Способ 3: Генераторы множеств
Как и в случае со списками и словарями, для создания множеств удобно использовать генераторы:
>>> print()
В генераторах можно использовать любые условия:
>>> print()
В генератор можно включить любые дополнительные функции, например, ввод input() и функцию ord() для возвращения числового кода символа из таблицы Unicode:
>>> print() ewr73694yrhf897349ugg05fhshcvnaWQXXldoaxsd
Помимо условия if , в генератор можно добавить обработку else :
>>> set_a = 2 5 12 13 4 56 71 33 9 10 >>> print(set_a)
Стандартные методы множеств в Python
Множества поддерживают ряд стандартных методов, общих для большинства коллекций Python, и имеют несколько собственных, уникальных для типа set . Начнем с общих методов.
Длина, сумма, min и max элементы
Эти методы работают со множествами точно так же, как и со списками и кортежами:
>>> set_a = >>> print(f'Количество элементов: , сумма элементов: ') Количество элементов: 8, сумма элементов: 46 >>> print(f'Минимальный элемент: , максимальный элемент: ') Минимальный элемент: 1, максимальный элемент: 12
Принадлежность элемента множеству
>>> my_set = >>> print('математика' in my_set) True >>> print('биология' not in my_set) True
Сортировка
Как и в случае с кортежами, результатом сортировки множества будет список:
>>> numbers = >>> print(sorted(numbers)) [0, 4, 7, 8, 12, 15, 19, 25, 34, 52, 59, 91] >>> print(sorted(numbers, reverse=True)) [91, 59, 52, 34, 25, 19, 15, 12, 8, 7, 4, 0]
Сравнение множеств
Множества можно сравнивать с помощью операторов == и != :
>>> set_a = >>> set_b = >>> print(set_b != set_a) True
>>> set_a = >>> set_b = >>> print(set_b > set_a) False
Это связано с тем, что при сравнении множеств Python определяет, является ли одно из них под- или надмножеством другого (подробнее об этом – ниже):
>>> set_a = >>> set_b = >>> print(set_b > set_a) True
Добавление элемента
Метод add() добавляет во множество новый элемент:
>>> letters = >>> letters.add('г') >>> print(letters)
Несколько элементов можно добавить с помощью цикла for (мы рассмотрим его в следующей статье) или с помощью генератора:
>>> set_a = set() >>> gen = >>> print(set_a)
Удаление элемента
Для удаления элемента нужно воспользоваться одним из поддерживаемых методов:
1. remove() – возвращает сообщение об ошибке, если элемент не будет найден:
>>> my_set = >>> my_set.remove(2) >>> print(my_set)
2. discard() – безопасный метод, не приводит к ошибке в случае отсутствия элемента:
>>> my_set = >>> my_set.discard('синий') >>> print(my_set) >>> my_set.discard('розовый') >>>
3. pop() – в отличие от аналогичного списочного метода, удаляет случайный элемент и возвращает его значение:
>>> my_set = >>> print(my_set.pop()) 1
4. Метод clear() удаляет все элементы множества сразу – так можно освободить оперативную память после завершения операции с объемным set :
>>> my_set = >>> my_set.clear() >>> print(my_set) set()
Специальные методы множеств
Как уже упоминалось выше, объекты set в Python поддерживают все операции, которые проводятся над множествами в математике. Эти операции делятся на три группы:
- Не изменяющие исходные множества – эти методы возвращают новые множества.
- Изменяющие исходные множества.
- Определяющие, являются ли множества под(над)множествами друг друга – эти методы возвращают True или False .
Рассмотрим методы из этих групп подробнее.
Методы, не изменяющие исходные множества
Объединение множеств
Объединение множеств union () – это множество, которое состоит из элементов, входящих в состав хотя бы одного из объединяемых множеств:
>>> set_a = >>> set_b = >>> print(set_a.union(set_b))
Вместо union() можно использовать оператор | :
>>> set_a = >>> set_b = >>> print(set_a | set_b)
Пересечение множеств
Пересечением множеств intersection() называется множество, которое состоит из элементов, входящих в каждое из пересекающихся множеств:
>>> set_a = >>> set_b = >>> print(set_a.intersection(set_b))
Вместо intersection() можно использовать оператор & :
>>> set_a = >>> set_b = >>> print(set_a & set_b)
Разность множеств
Разностью множеств difference() называется множество, в которое входят все элементы первого множества, не входящие во второе множество:
>>> set_a = >>> set_b = >>> print(set_a.difference(set_b))
Вместо difference() можно использовать оператор — :
>>> set_a = >>> set_b = >>> print(set_a - set_b)
Симметрическая разность
Симметрической разностью symmetric_difference() называется множество, состоящее из элементов, которые не входят в первое и второе множество одновременно:
>>> set_a = >>> set_b = >>> print(set_a.symmetric_difference(set_b))
В качестве оператора симметрической разности используется ^ :
>>> set_a = >>> set_b = >>> print(set_a ^ set_b)
Методы, изменяющие исходные множества
Метод update()
Изменяет исходное множество по объединению:
>>> set_a = >>> set_b = >>> set_a.update(set_b) >>> print(set_a)
Оператор метода update – |= :
>>> set_a = >>> set_b = >>> set_a |= set_b >>> print(set_a)
Метод intersection_update()
Изменяет исходное множество по пересечению:
>>> set_a = >>> set_b = >>> set_a.intersection_update(set_b) >>> print(set_a)
>>> set_a = >>> set_b = >>> set_a &= set_b >>> print(set_a)
Метод difference_update()
Изменяет исходное множество по разности:
>>> set_a = >>> set_b = >>> set_a.difference_update(set_b) >>> print(set_a)
>>> set_a = >>> set_b = >>> set_a -= set_b >>> print(set_a)
Метод symmetric_difference_update()
Изменяет исходное множество по симметрической разности:
>>> set_a = >>> set_b = >>> set_a.symmetric_difference_update(set_b) >>> print(set_a)
>>> set_a = >>> set_b = >>> set_a ^= set_b >>> print(set_a)
Методы для определения под- и надмножеств
Множество set_a считается подмножеством set_b в том случае, если все элементы set_a входят в set_b. В свою очередь, множество set_b этом случае считается надмножеством set_a. При этом любое множество считается подмножеством самого себя, или нестрогим подмножеством.
Для определения под- и надмножеств в Python есть три метода:
1. issuperset() – возвращает T rue , если первое множество является подмножеством второго, и False в обратном случае. Такой же результат можно получить с помощью операторов < (строгое подмножество) и
>>> set_a = >>> set_b = >>> print(set_a.issubset(set_b)) True >>> print(set_a >> print(set_a < set_b) True
2. issubset() – возвращает True , если одно множество является надмножеством другого, и False в противном случае. Аналог – операторы > (строгое надмножество) и >= (нестрогое надмножество):
>>> set_a = >>> set_b = >>> print(set_a.issuperset(set_b)) True >>> print(set_a > set_b) True >>> print(set_a >= set_b) True
3. isdisjoint() – возвращает True , если множества не имеют общих элементов, и False , если такие элементы есть:
>>> set_a = >>> set_b = >>> set_c = >>> print(set_a.isdisjoint(set_b)) True >>> print(set_c.isdisjoint(set_b)) False
Практика
Задание 1
Напишите программу, которая получает на вход три слова и определяет, являются ли они анаграммами друг друга.
Пример ввода:
кластер стрелка сталкер
set_a, set_b, set_c = set(input()), set(input()), set(input()) print('Да' if set_a == set_b == set_c else 'Нет')
Задание 2
Напишите программу, которая получает на вход две строки с перечислением интересов и хобби двух пользователей, и вычисляет процент совпадения.
Пример ввода:
кино книги велосипед хоккей кулинария цветы кошки кошки кино путешествия футбол кулинария автомобили дайвинг
Совпадение интересов: 27.27%
hobbies1 = input().split() hobbies2 = input().split() result = len(set(hobbies1) & set(hobbies2)) / float(len(set(hobbies1) | set(hobbies2))) * 100 print(f'Совпадение интересов: %')
Задание 3
Напишите программу, которая получает на вход строку, и определяет, является ли строка панграммой (т.е. содержатся ли в ней все 33 буквы русского алфавита).
Пример ввода:
Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства
result = print('Да' if len(result) == 33 else 'Нет')
Задание 4
Напишите программу, которая получает n слов, и вычисляет количество уникальных символов во всех словах.
Пример ввода:
5 программа код компьютер монитор интерпретатор
Количество уникальных символов во всех словах: 14
n = int(input()) print('Количество уникальных символов во всех словах:', len(set(''.join([input().lower() for _ in range(n)]))))
Задание 5
Напишите программу, которая:
- Получает на вход две строки, в которых перечисляются книги, прочитанные двумя учениками.
- Выводит количество книг, которые прочитали оба ученика.
Пример ввода:
Мастер и Маргарита, Война и мир, Тихий Дон, Евгений Онегин Джейн Эйр, Террор, Война и мир, Мастер и Маргарита, Нос
print(len(set(input().split(', ')) & set(input().split(', '))))
Задание 6
Напишите программу, которая получает от пользователя две строки с числами, и выводит в порядке возрастания числа, встречающиеся в обеих строках.
Пример ввода:
4 12 6 11 0 8 7 5 1 25 2 1 4 5 56 6 8 7 14 33
1 4 5 6 7 8
Задание 7
Напишите программу, которая получает два числа и выводит Есть , если числа содержат общие цифры, и Нет в противном случае.
Пример ввода:
5678 3421
print('Есть' if set(input()) & set(input()) else 'Нет')
Задание 8
Напишите программу, которая получает строку с именами файлов, и выводит уникальные имена .jpg файлов, отсортированные в алфавитном порядке.
Пример ввода:
book_cover.jpg cover.png Book_cover.jpg illustration.jpg ILLUSTRATION.JPG my_cover.png photo.gif award.jpg Award.jpg award.JPG
award.jpg book_cover.jpg illustration.jpg
files = input().split() result = print(*sorted(result))
Задание 9
Два дизайнера поспорили о том, кто из них знает больше оттенков цветов. Они перечисляют оттенки, но иногда забывают о том, что уже называли какой-то тон. Напишите программу, которая получает на вход n строк с названиями оттенков, и определяет, есть ли среди них повторы. Если повтор есть, нужно вывести Повтор , если нет – Принято .
Пример ввода:
6 аспидно-серый Бананомания аквамариновый Баклажановый агатовый антрацитовый
Принято
colors = [input().lower() for _ in range(int(input()))] print('Повтор!' if len(colors) > len(set(colors)) else 'Принято')
Задание 10
Кондитер собирается испечь торт. Напишите программу, которая поможет определить, имеются ли в кладовой все необходимые продукты:
- Сначала программа получает список из m продуктов, которые есть в кладовой.
- Затем получает n ингредиентов, необходимых для рецепта.
- Выводит Есть , если ингредиент имеется в кладовой, и Отсутствует в противном случае.
Пример ввода:
6 5 мука сахар Сода яйца масло сливочное масло растительное Сахар Мука Яйца сливки масло сливочное
Есть Есть Есть Отсутствует Есть
m, n = [int(input()) for _ in 'mn'] pantry = [print('Есть' if input().lower() in pantry else 'Отсутствует') for _ in range(n)]
Подведем итоги
Множества позволяют просто и лаконично решать задачи, связанные с уникальностью, вхождением элементов в определенные группы и совпадением (расхождением) в составе групп. Однако множества в Python имеют серьезный недостаток – они занимают значительный объем памяти, что может стать проблемой при решении олимпиадных задач. В следующей статье будем изучать цикл for.
- Особенности, сферы применения, установка, онлайн IDE
- Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
- Типы данных: преобразование и базовые операции
- Методы работы со строками
- Методы работы со списками и списковыми включениями
- Методы работы со словарями и генераторами словарей
- Методы работы с кортежами
- Методы работы со множествами
- Особенности цикла for
- Условный цикл while
- Функции с позиционными и именованными аргументами
- Анонимные функции
- Рекурсивные функции
- Функции высшего порядка, замыкания и декораторы
- Методы работы с файлами и файловой системой
- Регулярные выражения
- Основы скрапинга и парсинга
- Основы ООП: инкапсуляция и наследование
- Основы ООП – абстракция и полиморфизм
- Графический интерфейс на Tkinter
- Основы разработки игр на Pygame
- Основы работы с SQLite
- Основы веб-разработки на Flask
- Основы работы с NumPy
- Основы анализа данных с Pandas
Что такое set в Python?
Множества также схожи с массивами, но есть несколько отличий:
- Во-первых, множества создаются в абсолютно случайном порядке каждый раз. Вы можете разместить элементы как вам будет угодно, но они все равно будут расположены впоследствии в случайном порядке.
- Во-вторых, множества не могут иметь повторяющихся элементов, поэтому все элементы, которые будут одинаковыми не будут выведены повторно.
Их очень удобно использовать, если вы хотите удалить повторяющиеся элементы из списка, например:
some_list = [12, 56, 91, 12] set(some_list) # Результат: 12, 56, 91
Также для существует огромное множество операций, которые приведены ниже:
