Методическое
пособие по теме: «Работа с множествами на языке Python»
Выполнила: учитель информатики и ИКТ
Потапова Е.Н.
ГБОУ Школа № 1552
Оглавление
Описание множеств. 2
Создание множеств. 2
Операции над множествами. 3
Групповые операции над множествами.. 5
Сравнение множеств. 5
Примеры решения задач с
использование множеств. 6
Задача
A. Пунктуация. 6
Задача B. Все
различные цифры.. 6
Задача
C. Повторяющиеся цифры.. 7
Задача
D. Правильное восьмеричное число. 8
Задача G. Удалить
повторы.. 8
1. Онлайн
курс «Основы программирования на Python» Густокашин М. С. 9
Данный
материал будет полезен учителям информатики, работающих в профильных классах, а
также школьникам, желающим повысить свой уровень изучения языка Python.
Множество в python -
"контейнер", содержащий не повторяющиеся элементы в случайном порядке
В множество можно добавлять и
удалять объекты, проверять принадлежность объекта множества и перебирать все
объекты множества.
Также над множествами можно совершать
групповые операции, например, пересекать и объединять два множества.
В отличие от массивов, где элементы
хранятся в виде последовательного списка, в множествах порядок хранения
элементов неопределен (более того, элементы множества хранятся не подряд, как в
списке, а при помощи хитрых алгоритмов). Это позволяет выполнять операции типа
“проверить принадлежность элемента множеству” быстрее, чем просто перебирая все
элементы множества.
Множество
в теле программы может быть создано с помощью записи элементов через запятую в
фигурных скобках:
B = {3, 1, 2}
Исключением
является пустое множество, которое можно создать при помощи функции set()
. Если функции set
передать в качестве параметра список, строку или
кортеж, то она вернёт множество, составленное из элементов списка, строки,
кортежа.
A =
set('python')
выведет {'p', 'y', 't', 'h', 'o', 'n'}
.
Упорядоченность
является чистой случайностью.
Если при
задании множества присутствовало несколько одинаковых элементов, то они попадут
в множество в единственном экземпляре:
A =
set('Hello')
выведет {'H', 'e', 'l', 'o'}
.
Узнать
число элементов в множестве можно при помощи функции len
.
N=len(A)
print(N)
Программа выведет 4
Из
множества можно сделать список или кортеж с помощью функций list
и tuple
соответственно.
A = set('Hello')
B=list(A)
C=tuple(A)
print(A)
print(B)
print(C)
Программа выведет
{'H', 'e', 'l', 'o'} # множество
['H', 'e', 'l', 'o'] # список
('H', 'e', 'l', 'o') # кортеж
Для
добавления элемента в множество есть метод add
:
A = {1, 2, 3}
A.add(4)
print(A)
Программа
выведет
{1, 2,
3, 4}
Для
удаления элемента x
из множества можно использовать метод discard
. В случае, когда удаляемый элемент отсутствует в множестве метод discard
не делает ничего.
A = {1, 2, 3}
A.discard(2)
print(A)
Программа
выведет
{1, 3}
Полная
очистка
Иногда
необходимо полностью убрать все элементы. Чтобы не удалять каждый элемент
отдельно, используется метод clear, не принимающий аргументов. Если вывести
содержимое после этой операции, на экране появится только его название.
А = {0, 1, 2, 3}
А.clear()
print(А)
Программа
выведет
set()
В результате получили пустое множество.
Перебрать
все элементы множества (в неопределенном порядке!) можно при помощи цикла for
:
А = {2, 3, 5, 7, 11}
for dit in А:
print(dit)
Проверить,
принадлежит ли элемент множеству можно при помощи операции in
, возвращающей значение типа bool
. Аналогично есть противоположная операция not in
A = {1, 2, 3}
print(1 in A, 4 not in A)
Программа
выведет
True True
В Питоне
можно работать не только с отдельными элементами множеств, но и с множествами в
целом. Например, для множеств определены следующие операции:
A = {1, 2, 3}
B = {4, 2, 5}
|
Операция
|
Описание
|
Результат
|
A | B
|
Объединение множеств {1,
2, 3, 4, 5}
|
{1, 2, 3, 4, 5}
|
A
& B
|
Пересечение множеств
|
{2}
|
A - B
|
Множество, элементы
которого входят в A, но не входят в B
|
{1, 3}
|
A ^ B
|
Элементы входят в A |
B, но не входят в A & B
|
{1, 3,
4, 5}
|
В
результате этих операций создается новое множество, однако для них определена и
сокращенная запись: |=, &=, -= и ^=. Такие операции изменяют множество,
находящееся слева от знака операции.
A = {1, 2, 3}
B = {4, 2, 5}
|
Операция
|
Описание
|
A == B
|
Все
элементы совпадают
|
A != B
|
Есть
различные элементы
|
A
<= B
|
Все
элементы A входят в B
|
Также
определены операции > и >=. Все групповые операции и сравнения проводятся
над множествами за время, пропорциональное количеству элементов в множествах.
Примеры
решения задач с использование множеств задачи из учебника К.Ю.
Полякова и Е.А. Еремина (Информатика 10-11 классы. Углублённый уровень. М.:
БИНОМ, 2013)
https://informatics.mccme.ru/mod/statements/view.php?id=11544#1
Напишите
программу, которая считает знаки пунктуации в символьной строке. К знакам пунктуации
относятся символы из набора ".,;:!?".
Входные
данные
Программа получает на вход символьную строку.
Выходные
данные
Программа
должна вывести общее количество знаков пунктуации во входной строке.
Примеры
входные
данные
Hi,
guys!
выходные
данные
2
Решение
a = set('.,;:!?')
st=input()
k=0
for x in st:
if x in a: k+=1
print(k)
Напишите
программу, которая находит все различные цифры в символьной строке.
Входные
данные
На вход программе подаётся символьная строка.
Выходные
данные
Программа
должна вывести в одной строке все различные цифры, которые встречаются в
исходной строке, в порядке возрастания. Если в строке нет цифр, нужно вывести
слово 'NO'.
Примеры
входные
данные
ab1n32kz2
выходные
данные
123
входные
данные
asdasd
выходные данные
NO
Решение
a = set()
st=input()
for x in st:
if '0'<=x<='9' and x not in a: a.add(x)
if len(a)>0:
b=sorted(list(a))
print(*b,sep='')
else : print('NO')
Напишите
программу, которая выводит все цифры, встречающиеся в символьной строке больше
одного раза.
Входные
данные
Входная строка может содержать содержит цифры, пробелы и латинские
буквы.
Выходные
данные
Программа
должна вывести в одну строчку в порядке возрастания все цифры, встречающиеся во
входной строке больше одного раза. Если таких цифр нет, нужно вывести слово
'NO'.
Примеры
входные
данные
asd12gh23
выходные
данные
2
входные
данные
t1y2u3i4o5
выходные
данные
NO
Решение
a = set()
st=input()
b=set()
for x in st:
if '0'<=x<='9' and x not in a: a.add(x)
elif x in a:
b.add(x)
if len(b)>0:
b=sorted(list(b))
print(*b,sep='')
else: print('NO')
Напишите
программу, которая определяет правильность записи целого числа в восьмеричной
системе счисления.
Входные
данные
На вход программы поступает символьная строка.
Выходные
данные
Программа
должна вывести ответ 'YES', если строка представляет собой правильную запись
целого числа в восьмеричной системе счисления, и 'NO', если запись ошибочна.
Примеры
входные
данные
12345
выходные
данные
YES
входные
данные
1a234
выходные
данные
NO
Решение
a = {'0','1','2','3','4','5','6','7'}
b=input()
if set(b)<=a and b[0]!='0':
print('YES')
else: print('NO')
Напишите
программу, которая удаляет из строки все повторяющиеся символы.
Входные
данные
На вход программы подаётся строка, содержащая символы таблицы
ASCII.
Выходные
данные
Программа
должна вывести исходную строку, из которой удалены все повторяющиеся символы.
Примеры
входные
данные
abc13a1b2z3c
выходные
данные
abc132z
входные
данные
QWasd123
выходные
данные
QWasd123
Решение
a = input()
b=set()
s=''
for x in a:
if x not in b:
b.add(x)
s+=x
print(s)
Используемая литература:
2.
https://python-scripts.com/sets
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.