Як додати елемент у кортеж на 0 індекс у python
І необхідно додати елемент у кортеж на 0 індекс, щоб інші просто зрушили далі. Наприклад, у мене є змінна symbol = '$' Після виведення кортежу я повинен отримати:
'$', 'category', 'key:2', 'title:hr'
1 відповідь 1
Кортеж є незмінним об'єктом, тому Ви не можете додати до нього новий елемент.
Але можна створити новий кортеж на основі наявного. Для зручності можна перетворити його на список, скористатися методом insert і перетворити назад.
Приклад:
pp = 'category', 'key:2', 'title:hr' symbol = '$' pp = list(pp) pp.insert(0, symbol) pp = tuple(pp) print(pp)
stdout:
('$', 'category', 'key:2', 'title:hr')
Упаковка даних у Python - кортеж tuple
Вас звуть get_contacts і ви вмієте знаходити контакти людини за email-адресою: його адресу, ім'я та номер телефону. Ви не проти поділитися інформацією з іншими, але Python вам це забороняє. Не можна повертати так багато даних разом, результат у функції може бути лише один. Ви можете вибрати щось одне, найважливіше: адресу, ім'я або телефон людини. Або можете виявити винахідливість і запакувати всі свої дані в одну змінну.
Як упакувати дані в кортеж
Для функції get_contacts(email) доступні кілька способів упаковки даних у складнішу структуру: словник dict() , кортеж tuple() та ще кілька інших. Розглянемо докладніше останній варіант - 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
Розберемо як працювати з 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
Отримайте круте код-рев'ю від практикуючих програмістів з розбором помилок та рекомендаціями, на що звернути увагу безкоштовно.
Перейдіть на сторінку навчальних модулів «Девмана» та вибирайте тему.