Слайд 1Явное лучше неявного
Гвидо ван Россум
Разрежённое лучше плотного
Слайд 2Язык программирования Python
(Лекция 13. Множества)
Валеева Н.Х. – кан. пед. наук,
преподаватель ц/к ПЭВМ
Слайд 3Язык программирования Python
был создан примерно в 1991 году голландцем
Гвидо
ван Россумом.
Официальный сайт http://python.org
Слайд 4Множество (set, frozenset)
Множества в Python - неупорядоченные
совокупности объектов произвольных типов, заключенные в фигурные скобки
Например:
{23, 656, -20, 67, -45} # множество целых чисел
{4.15, 5.93, 6.45, 9.3, 10.0, 11.6} # множество из дробных чисел
{"Katy", "Sergei", "Oleg", "Dasha”} # множество из строк
{"Москва", "Титова", 12, 148.4} # смешанное множество
{[0, 0, 0], [0, 0, 1], (0, 1, 0), {100}} # множество, состоящее из списков, кортежa и множества
Слайд 5Особенности множества
Элементы множества неупорядочены
Множество (set) можно изменять
Множество (frozenset ) неизменяемый
объект
Множество не содержит одинаковых элементов
С множествами можно выполнять операции объединения, пересечения, вычитания и др.
Слайд 6Способы создания множества
1. Пустое множество:
>>> a
= set()
Запись вида а = {} не верна!
2. Одноэлементное множество:
>>> a = {5}
>>> print(a)
{5}
Слайд 73. Произвольное множество можно создать простым перечислением элементов:
>>> a = {1,
2, 3, 4, 5}
>>> print(a)
{1, 2, 3, 4, 5}
Или
>>> a = set((1, 2, 3, 4, 2, 1, 4)) # скобки!
>>> print(a)
{1, 2, 3, 4}
Или
>>> a = set('hello, world!‘)
>>> a
{',', 'w', ' ', 'h', 'l', 'e', 'd', 'r', 'o‘, ‘!’}
Способы создания множества
Слайд 8Задание множества
4. Можно задать с помощью генератора:
>>> a = {i ** 2 for i in (10)}
>>> print(a)
{0, 1, 4, 81, 64, 9, 16, 49, 25, 36}
Слайд 9Доступ к элементам множества
Проход по элементам множества производится при помощи for in:
>>>
for item in {1, 2, 'some'}:
print(item)
Результат:
some
2
1
Принадлежность элемента множеству определяет логическая операция in, принимающая значение True, если элемент принадлежит множеству.
Слайд 10Добавление элементов в
множество
Для добавления элемента в множество есть
метод add:
a = {1, 2, 3}
print(a) # {1, 2, 3}
a.add(4)
print (a) # {1, 2, 3, 4}
Слайд 11Удаление элементов
из множества
Для удаления элемента из множества есть три метода: discard, remove
и pop.
1) а.discard(x) – удаляет указанный элемент х из множества а. Если такого элемента нет, то ничего не происходит.
2) а. remove(х) – также удаляет указанный элемент х из множества а. Но! Когда удаляемый элемент отсутствует в множестве, метод remove генерирует исключение KeyError. Поэтому лучше проверить наличие:
a = {'Алина', 'Ксения', 'Елизавета', 'Алена'}
name = input('Кого удаляем? ')
if name in a:
a.remove(name)
print(a)
3) а.pop() - удаляет из множества один случайный элемент и возвращает его значение. Если же множество пусто, то генерируется исключение KeyError.
Слайд 121. Объединение множеств (сложение).
Обозначение: c = a | b
Арифметические операции
a
b
c
Возвращает множество,
являющееся
объединением множеств a и b.
a.union(b)
Слайд 132. Пересечение множеств (умножение).
Обозначение: c = a & b
Арифметические операции
a
b
c
Возвращает множество
элементов,
принадлежащих одновременно двум множествам,
то есть общие элементы множеств a и b.
a.intersection(b)
Слайд 143. Разность множеств (вычитание).
Обозначение: c = a - b
Арифметические операции
a
b
c
Возвращает множество
элементов, входящих в a, но не входящих в b.
a.difference(b)
Слайд 154. Симметрическая разность множеств.
Обозначение: c = a ^ b
Арифметические операции
a
b
c
Возвращает множество
элементов, входящих в а или в b, но не в оба из них одновременно.
a.symmetric_difference(b)
Слайд 17
Некоторые полезные методы
len(a) - число элементов в множестве a (размер
множества).
a.isdisjoint(b) - истина, если множества a и b не имеют общих элементов.
a.copy() - копия множества.
a.clear() - очистка множества.
Слайд 18Задача
Вводится «длинное число».
Каких цифр нет в записи этого числа?
Например,
вводим: 5840393.
В этом числе нет цифр: 1, 2, 6, 7
Слайд 19Скрипт
n = input('Введите число: ')
m = set(n)
print(m)
c = {'0', '1', '2',
'3', '4', '5', '6', '7', '8', '9'}
x = c - m
print(x)
Слайд 21Выполнить задание:
Задание 1: Дан список чисел. Определите, сколько в
нем встречается различных чисел.
Задание 2: Даны два списка чисел. Посчитайте, сколько чисел содержится одновременно как в первом списке, так и во втором.
Задание 3: Даны два списка чисел. Найдите все числа, которые входят как в первый, так и во второй список и выведите их в порядке возрастания.
Задание 4:Во входной строке записана последовательность чисел через пробел. Для каждого числа выведите слово YES (в отдельной строке), если это число ранее встречалось в последовательности или NO, если не встречалось.