Кортежі (tuple)
Сьогодні я розповім про такий тип даних, як кортежі (tuple) і про те, де вони застосовуються.
Кортеж, по суті – незмінний список.
Для чого потрібні кортежі, якщо є списки?
- Захист від дурня. Тобто кортеж захищений від змін як навмисних (що погано), так і випадкових (що добре).
- Менший розмір.
Як працювати з кортежами?
З перевагами кортежів розібралися, тепер постає питання – а як із ними працювати.
Створюємо порожній кортеж:
Створюємо кортеж з одного елемента:
Ну і створити кортеж з об'єкта, що ітерується, можна за допомогою все тієї ж горезвісної функції tuple()
Операції з кортежами
Усі операції над списками, які не змінюють список (складання, множення на число, методи index() та count() та деякі інші операції) Можна також по-різному змінювати елементи місцями тощо.
Наприклад, гордість програмістів на python - поміняти місцями значення двох змінних:
Для вставки коду на Python в коментар укладайте його в теги
- Книги про Python
- GUI (графічний інтерфейс користувача)
- Курси Python
- Модулі
- Новини світу Python
- NumPy
- Обробка даних
- Основи програмування
- Приклади програм
- Типи даних у Python
- Відео
- Python для Web
- Робота для Python-програмістів
Упаковка даних у Python - кортеж tuple
Вас звуть get_contacts і ви вмієте знаходити контакти людини по email-адресі: його адреса, ім'я та номер телефону Ви не проти поділитися інформацією з іншими, але Python вам це забороняє так багато даних, результат у функції може бути тільки один .Ви можете вибрати щось одне, найважливіше: адресу, ім'я, або телефон людини. усі свої дані в одну змінну.
Як упакувати дані в кортеж
Для функції get_contacts(email) доступні кілька способів упаковки даних у складнішу структуру: словник dict() , кортеж tuple() і ще кілька інших. кортеж.
Припустимо, ви викликали функцію get_contacts('[email protected]') , вона знайшла таку людину і хоче повернути її контакти:
full_name =
'Нікіфоров Дмитро Анатолійович' city =
'Москва' phone_number =
'929-876-54-32'
Функція створює кортеж - tuple() -, щоб помістити в нього всі контакти:
contacts =
(full_name, city, phone_number)
Круглі дужки та коми вказують Python, що з перерахованих змінних full_name , city і phone_number потрібно створити нову структуру даних:
print(type(contacts))
# виведе print(contacts)
Останній виклик print() виведе на екран таке:
('Нікіфоров Дмитро Анатолійович', 'Москва', '929-876-54-32')
Тепер функція get_contacts зможе повернути будь-яку кількість даних.
Що робити, якщо отримали tuple
Розберемо як працювати з tuple на прикладі стандартної функції divmod.
divmod(100,
3)
# виведе (33, 1)
divmod(2,
3)
# виведе (0, 2)
Функція divmod повертає кортеж з двох чисел - результату цілісного розподілу та залишок від розподілу.
Ми можемо зберегти результат у змінну:
div_tuple =
divmod(100,
3)
print(div_tuple)
# виведе (33, 1)
Дістатися кожного з двох чисел можна за індексом:
div_tuple =
divmod(100,
3)
print(div_tuple[0])
# виведе 33
print(div_tuple[1])
# виведе 1
Індекси в коді [0] і [1] сильно ускладнюють читання, тому корисно давати назви, що говорять:
div_tuple =
divmod(100,
3) int_division = div_tuple[0] remainder = div_tuple[1]
print(int_division)
# виведе 33
print(remainder)
# виведе 1
Розпакування кортежу
При роботі з кортежами часто доводиться діставати всі дані в окремі змінні:
int_division = div_tuple[0] remainder = div_tuple[1]
Це зустрічається настільки часто, що Python ввели спрощену коротку запис:
(int_division, remainder)
=
divmod(100,
3)
print(int_division)
# виведе 33
print(remainder)
# виведе 1
Запис схожий на створення кортежу - ті ж дужки та коми, але працює це у зворотний бік. Називається "розпакуванням".
Якщо кортежі більше одного елемента, то дужки вказувати необов'язково. Python любить чистий код:
int_division, remainder =
divmod(100,
3)
print(int_division)
# виведе 33
print(remainder)
# виведе 1
Остання форма запису розпакування найбільш поширена та рекомендується до використання.
Дужки не обов'язково вказувати і при створенні кортежу, але цей прийом може ускладнити читання коду, будьте обережні:
contacts = full_name, city, phone_number
У коді всередині функцій часто зустрічається ще коротший запис:
return full_name, city, phone_number
Виклик return повідомляє інтерпретатор Python, що функція завершує свою роботу і хоче повернути результат. А все перераховане праворуч від return буде упаковане в кортеж - tuple.
Як додати елемент до кортежу
Додати до кортежу нічого не можна. Він незмінний, одного разу створений кортеж неможливо змінити. Зате можна створити новий:
old_tuple =
(1,
2) new_tuple = old_tuple +
(3,
4)
print(new_tuple)
# Виведеться (1, 2, 3, 4)
Якщо ви хочете додати тільки один елемент, то велика спокуса написати так:
old_tuple =
(1,
2) new_tuple = old_tuple +
3
TypeError: може лише висловлюватися tuple (не "int") to tuple
Ця помилка означає, що ви спробували скласти кортеж і число, а Python вміє складати лише кортежі. Тому доведеться зробити з вашого елемента кортеж, але з одним елементом усередині:
old_tuple =
(1,
2) new_tuple = old_tuple +
(3,)
print(new_tuple)
# Виведеться (1, 2, 3)
Що ще почитати
Спробуйте безкоштовні уроки з Python
Отримайте круте код-рев'ю від практикуючих програмістів з розбором помилок та рекомендаціями, на що звернути увагу безкоштовно.
Перейдіть на сторінку навчальних модулів «Девмана» та вибирайте тему.