Файл: Занятие 11 Кортежи в Python Множества в Python Словари (ассоциативные массивы) в Python Хеширование и хешфункция.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 17
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Кружок по программированию
на Python
Занятие №11
•
Кортежи в Python
•
Множества в Python
•
Словари (ассоциативные массивы) в Python
•
Хеширование и хеш-функция
Кружок по программированию на Python
Кортежи, множества и словари
•
Список -- изменяемая последовательность элементов произвольных типов.
•
Однако:
•
В языке Python есть и другие типы массивов, схожие по структуре, но принципиально отличные от списков.
Введение
Что такое массив?
•
Кортеж (tuple) – это неизменяемая структура данных, которая по своей структуре очень похожа на список.
•
A = (1, 2, 3)
•
A = ()
•
A = tuple()
Введение
Кортеж (tuple)
Но:
A = (4, ) в случае одного элемента!
•
a = (1, 2, 3, ‘fox’, 10)
•
a [1::2] - ?
0 1
2 3
4
-5
-4
-3
-2
-1
•
a[1::2] -> (2, ‘fox’)
•
Однако недопустима операция присваивания в отношении элементов кортежа: a[2] = 5
Индексация
Срезы
1
2
3
‘fox’
10
a[::3] -> (1, ‘fox’)
a[1:3:2] -> (2)
a[1:3:-2] -> ()
1
2
4
3
По прежнему работают те функции и методы, характерные для списков, которые не изменяют кортеж:
• len(list): возвращает длину кортежа
• min(list): возвращает наименьший элемент кортежа
• max(list): возвращает наибольший элемент кортежа
Кортежи в Python
Функции
• index(x): возвращает индекс элемента x. Если элемент не найден, генерирует исключение ValueError;
• count(x): возвращает количество вхождений элемента x в список;
Используемые методы не должны менять сам список, иначе генерируется исключение AttributeError
Кортежи в Python
Методы
•
Хеширование (англ. hashing) —метод поиска, идея которого состоит в вычислении хеш-кода, однозначно определяемого каждым элементом с помощью хеш-функции, и использовании его как индекса (индексирование в памяти по хеш-коду выполняется за O(1))
•
H(x) = x%8
Хеширование
0 1
2 3
4 5
6 7
16 1
26 45 63 9
•
Множество - структура, содержащая неповторяющиеся элементы в случайном порядке.
•
A=set()
•
A=set(‘foxford’)
>> {'d', 'f', 'o', 'r', 'x’}
•
A = {4, 5, 6}
•
A = {}
Введение
Множество (set)
По прежнему работают :
• len(set): возвращает количество элементов множества
• min(set): возвращает наименьший элемент множества
• max(set): возвращает наибольший элемент множества
•
x in set: проверяет принадлежность множеству
•
set.clear(): очищает множество
•
set.pop(): удаляет первый элемент из множества. Так как множества не упорядочены, нельзя точно сказать, какой элемент будет первым.
Множества в Python
Функции
Дано два списка.
Узнать:
1.
количество уникальных элементов списка;
2.
максимальный из них;
3.
минимальный из них ;
4.
вывести общие элементы для двух списков
Задача №1
A = set(input().split())
B = set(input().split())
print(len(A), len(B))
print(max(max(A),max(B)))
print(min(min(A),min(B)))
print(A.intersection(B))
Задача №1
Множества в Python
A | B
A.union(B)
Возвращает множество, являющееся объединением множеств A и B.
A & B
A.intersection(B)
Возвращает множество, являющееся пересечением множеств A и B.
A - B
A.difference(B)
Возвращает разность множеств A и B.
A ^ B A.symmetric_difference(B)
Возвращает симметрическую разность множеств A и B.
A < B
Возвращает true, если A является подмножеством B и не равно B.
A > B
Возвращает true, если A является подмножеством B и не равно B.
Множества в Python
A |= B
A.update(B)
Добавляет в множество A все элементы множества B.
A &= B A.intersection_update(B)
Оставляет в множестве A только элементы множества B.
A -= B A.difference_update(B)
Удаляет из множества A все элементы, входящие в B.
A ^= B A.symmetric_difference_
update(B)
Записывает в A симметрическую разность множеств A и B.
A <= B
A.issubset(B)
Возвращает true, если A является подмножеством B.
A>=B
A.issuperset(B)
Возвращает true, если A является подмножеством B.
•
Во входном файле записан текст. Словом считается последовательность непробельных символов идущих подряд, слова разделены одним или большим числом пробелов или символами конца строки.
•
Определите, сколько различных слов содержится в тексте.
Задача №2
a=set()
f = open('test.txt')
for w in f.read().split():
a.add(w)
print(len(a))
Или:
print(len(set(w for w in open('test.txt').read().split())))
Задача №2
f = open('test.txt')
for w in f.read().split():
a.add(w)
print(len(a))
Или:
print(len(set(w for w in open('test.txt').read().split())))
Задача №2
•
Словари в Python - неупорядоченные коллекции произвольных объектов с доступом по ключу.
Иногда их называют ассоциативными массивами.
•
A=dict()
•
A = {}
•
A = {‘Ivan’: 12, ‘Pavel’: 19}
Введение
Словари (dict)
•
dict.clear() - очищает словарь.
•
dict.copy() - возвращает копию.
•
dict.get(key[, default]) - возвращает значение ключа, но если его нет, возвращает None.
•
dict.items() - возвращает пары (ключ, значение).
•
dict.keys() - возвращает ключи в словаре.
•
dict.values() - возвращает значения словаря
•
dict.pop(key[, default]) - удаляет ключ и возвращает значение.
Если ключа нет, возвращает исключение
•
dict.update([x]) - обновляет словарь, добавляя пары (ключ, значение) из x.
Словари в Python
Дан англо-русский словарь. Сделать из него русско- английский, вывести в файл.
Задача №3
for line in f:
words = line.strip().split(' - ')
key = words[0]
val = words [1].split(',')
for k in val:
if k in d:
d[k].append(key)
else:
d[k] = [key]
Задача №3
words = line.strip().split(' - ')
key = words[0]
val = words [1].split(',')
for k in val:
if k in d:
d[k].append(key)
else:
d[k] = [key]
Задача №3
Посчитать частоту появления слов в текстовом файле.
Задача №4
Посчитать частоту появления слов в текстовом файле.
words = {}
strip = string.whitespace + string.punctuation + string.digits + "\"'"
for line in open('shakespeare.txt'):
for word in line.lower().split():
word = word.strip(strip)
if len(word) > 2:
words[word] = words.get(word, 0) + 1
Задача №4
Спасибо за внимание!