Всем привет! Пытаюсь разобраться, как же всё-таки добавлять элементы в кортеж в Python. Знаю, что кортежи неизменяемы, но может быть, есть какие-нибудь обходные пути? Буду признателен за подробности, код и любые рекомендации. Спасибо!
Всем привет! Пытаюсь разобраться, как же всё-таки добавлять элементы в кортеж в Python. Знаю, что кортежи неизменяемы, но может быть, есть какие-нибудь обходные пути? Буду признателен за подробности, код и любые рекомендации. Спасибо!
Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat
А ТАКЖЕ: Канал о Python, статьи и книги ==>> @pythoneer_ru
Привет! Да, ты прав, кортежи неизменяемы, поэтому напрямую добавлять в них элементы нельзя. Но можно создать новый кортеж на основе старого. Вот один из способов:
Тут мы просто создаём новый кортеж с элементом 4 и объединяем его с оригинальным кортежом. Надеюсь, это поможет!Программный код:
original_tuple = (1, 2, 3)
new_element = (4,)
new_tuple = original_tuple + new_element
print(new_tuple)
Круто, не знал, что так можно. Спасибо за инфу!Сообщение от Танк
В теории, если тебе часто надо добавлять элементы, лучше использовать список. Кортежи ведь оптимальны для неизменяемых данных. Если всё-таки хочется именно кортежи, тогда можно делать так:
Сначала конвертируем кортеж в список, добавляем элемент, а потом назад в кортеж.Программный код:
original_tuple = (1, 2, 3)
temp_list = list(original_tuple)
temp_list.append(4)
new_tuple = tuple(temp_list)
print(new_tuple)
Да, списки тут явно удобней. Но способ всё равно полезный, если кортежи нужны.Сообщение от AlexSinger
Хей, можно даже использовать unpacking внутри функции. Например, можно сделать функцию для добавления элемента:
Функция распаковывает элементы кортежа и добавляет новый.Программный код:
def add_to_tuple(tpl, elem):
return (*tpl, elem)
original_tuple = (1, 2, 3)
new_tuple = add_to_tuple(original_tuple, 4)
print(new_tuple)
Чётко, про анпакинг в функциях не знал, спасибо за наводку!Сообщение от Леголас
Привет! Помни, что кортежи часто используются за счёт их неизменяемости, поэтому манипуляции с ними должны быть осознанными. В твоём случае, тебе могут помочь генераторы:
Тут фишка в том, что мы используем генератор для добавления элемента, и потом создаём кортеж из генератора.Программный код:
original_tuple = (1, 2, 3)
def add_element_to_tuple(tpl, new_elem):
for item in tpl:
yield item
yield new_elem
new_tuple = tuple(add_element_to_tuple(original_tuple, 4))
print(new_tuple)
Интересно, про генераторы раньше слыхал только в другом контексте. Надо попробовать.Сообщение от Алина Петровна