Professional Documents
Culture Documents
Лабораторна робота 4
Лабораторна робота 4
Множина
Множина – невпорядкований набір унікальних і незмінних
об'єктів, який підтримує операції, що відповідають
математичній теорії множин. За визначенням, кожний елемент
може бути присутнім в множині в одному екземплярі незалежно
від того, скільки разів він буде доданий. Оскільки множина є
набором інших об'єктів, їй притаманні деякі властивості списків
і словників (множини підтримують ітерації, при необхідності
можуть змінюватися в розмірах і містити об'єкти різних типів).
Щоб створити об'єкт множина, потрібно передати
послідовність або інший об'єкт, що підтримує можливість
ітерацій за його вмістом, вбудованій функції set:
x = set('abcde')
S1 = {1, 2, 3, 4}
S1 & {1, 3} # Перетин. Результат {1, 3}
{1, 5, 3, 6} | S1 # Об'єднання. Результат {1, 2, 3, 4,
5, 6}
S1 - {1, 3, 4} # Різниця. Результат {2}
S1 > {1, 3} # Надмножина. Результат True
S = set([1, 2, 3])
S | set([3, 4]) # Оператори виразу вимагають щоб
обидва операнди були множинами. Результат {1, 2, 3, 4}
Кортежі
Списки та рядки мають багато спільного. Наприклад, для
них можна одержати елемент за індексом або застосувати
операцію зрізу. Це два приклади послідовностей. Ще одним
убудованим типом послідовностей є кортеж (tuple). Кортеж
складається з набору значень, розділених комою, наприклад:
t = 12345, 54321, 'hello!'
print(t[0]) # 12345
print(t) # (12345, 54321, 'hello!')
u = t, (1, 2, 3, 4, 5)
print(u) # ((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
singleton = 'hello',
print(len(singleton)) # 1
print(singleton) # ('hello',)
Словники
Ще один убудований в Python тип даних – словник
(dictionary) – часто називають асоціативним масивом. На
відміну від послідовностей, що індексуються діапазоном чисел,
доступ до елементів словника провадиться за ключем будь-
якого типу, що не дозволяє внесення змін, – рядки та числа
завжди можуть бути ключами.
Кортежі використовуються як ключі, якщо вони містять
рядки, числа та кортежі, що задовольняють це правило. Не
можна застосовувати списки, тому що їх можна змінити (не
створюючи нового об'єкта-списку) за допомогою, наприклад,
методу append().
Найліпше можна уявити словник як невпорядковану
множину пар key:value (ключ:значення), причому кожен ключ є
унікальним у межах одного словника. Фігурні дужки {}
створюють порожній словник. Поміщаючи список пар
key:value, розділених комами, у фігурні дужки, ви вказуєте
початковий вміст словника.
Такий самий вигляд матиме словник при виведенні.
Основні операції над словником – збереження з указаним
ключем та виведення за ним значення. Можна також видалити
пари key:value за допомогою інструкції del. Під час зберігання
нового значення із ключем, що вже використовується, старе
значення видаляється. При спробі прочитати значення за
ключем, якого немає в словнику, генерується виняткова
ситуація KeyError.
Метод keys() для словника повертає список усіх
використовуваних ключів у довільному порядку (якщо
необхідно, щоб список був упорядкований, застосовують до
нього метод sort()).
Методи словників
dict.clear() – очищає словник.
dict.copy() – повертає копію словника.
dict.fromkeys (seq [, value]) – створює словник з ключами з
seq і значенням value (за замовчуванням None).
dict.get(key [, default]) – повертає значення ключа, але
якщо його немає, не викидає виняток, а повертає default (за
замовчуванням None).
dict.items() – повертає пари (ключ, значення).
dict.keys() – повертає ключі в словнику.
dict.pop(key [, default]) – видаляє ключ і повертає
значення. Якщо ключа немає, повертає default (за
замовчуванням кидає виняток).
dict.popitem() – видаляє і повертає пару (ключ, значення).
Якщо словник порожній, кидає виняток KeyError. Пам'ятайте,
що словники невпорядковані.
dict.setdefault(key [, default]) – повертає значення ключа,
але якщо його немає, не кидає виняток, а створює ключ із
значенням default (за замовчуванням None).
dict.update([other]) – оновлює словник, додаючи пари
(ключ, значення) з other. Існуючі ключі перезаписуються.
Повертає None (не новий словник!).
dict.values() – повертає значення в словнику.
Наведемо простий приклад використання словника як
телефонного довідника:
price = {'apple': 40980, 'dell': 34139}
price['hp'] = 34127 # Доповнення словника
print(price) # {'apple': 40980, 'dell': 34139, 'hp':
34127}
print(price['apple']) # 4098
del price['dell'] # Видалення пари зі словника
price['asus'] = 4127
print(price) # {'apple': 40980, 'hp': 34127, 'asus':
4127}
print(price.keys()) # dict_keys(['apple', 'hp',
'asus'])
Генератори
Конструкцію генератора множин розміщують у фігурні
дужки. Генератор множин виконує цикл і збирає результати
виразу в кожній ітерації - доступ до значення в поточній ітерації
забезпечує змінна циклу. Результатом роботи генератора є нова
множина:
new_set = {x ** 2 for x in [1, 2, 3, 4]} # Генератор
множин
print(new_set) # {16, 1, 4, 9}
# Чи перетинаються множини
print({3, 4, 5}.isdisjoint({8, 1, 0}))
print({3, 4, 5}.isdisjoint({1, 2, 3}))
# Об'єднання множин
print({1, 3}.union({2, 3, 4}))
print({1, 3} | {2, 3, 4})
# Перетин множин
print({1, 3}.intersection({2, 3, 4}))
print({1, 3} & {2, 3, 4})
# Різниця множин
print({1, 2, 3, 4}.difference({3, 4, 5}))
print({1, 2, 3, 4} - {3, 4, 5})
# Симетрична різниця
print({1, 2, 3, 4}.symmetric_difference({3, 4, 5, 6}))
print({1, 2, 3, 4} ^ {3, 4, 5, 6})
# Копіювання множини
my_set = set('chars')
copy = my_set.copy()
print(copy)