Перейти к содержимому

Что такое set python

  • автор:

Что такое 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.

  1. Особенности, сферы применения, установка, онлайн IDE
  2. Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
  3. Типы данных: преобразование и базовые операции
  4. Методы работы со строками
  5. Методы работы со списками и списковыми включениями
  6. Методы работы со словарями и генераторами словарей
  7. Методы работы с кортежами
  8. Методы работы со множествами
  9. Особенности цикла for
  10. Условный цикл while
  11. Функции с позиционными и именованными аргументами
  12. Анонимные функции
  13. Рекурсивные функции
  14. Функции высшего порядка, замыкания и декораторы
  15. Методы работы с файлами и файловой системой
  16. Регулярные выражения
  17. Основы скрапинга и парсинга
  18. Основы ООП: инкапсуляция и наследование
  19. Основы ООП – абстракция и полиморфизм
  20. Графический интерфейс на Tkinter
  21. Основы разработки игр на Pygame
  22. Основы работы с SQLite
  23. Основы веб-разработки на Flask
  24. Основы работы с NumPy
  25. Основы анализа данных с Pandas

Что такое set в Python?

Множества также схожи с массивами, но есть несколько отличий:

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

Их очень удобно использовать, если вы хотите удалить повторяющиеся элементы из списка, например:

some_list = [12, 56, 91, 12] set(some_list) # Результат: 12, 56, 91

Также для существует огромное множество операций, которые приведены ниже:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar