JavaRush /Курсы /Модуль 1: Python Core /«Изменение» кортежа

«Изменение» кортежа

Модуль 1: Python Core
5 уровень , 12 лекция
Открыта

13.1 Добавление элементов

Кортежи — это неизменяемые объекты. После создания кортежа его невозможно изменить. Но очень часто, даже если объект нельзя изменить, нам может понадобиться его изменённая копия.

Именно это сделано с классом str — у него есть два десятка методов, которые не изменяют оригинальный объект str, но возвращают новую строку, соответствующую сути вызываемого метода.

Разработчики Python могли бы добавить к классу tuple методы, которые бы возвращали новый объект при попытке изменить кортеж. Но они этого не сделали. Возможно, чтобы не запутать нас, или по другой причине.

Поэтому все изменения кортежа происходят по следующей схеме:


                список = list(кортеж)
                меняем список тут
                кортеж2 = tuple(список)
                        
Добавление нового элемента — метод append():

Например, вы хотите добавить элемент в кортеж, вот как это может выглядеть:


my_tuple = (1, 2, 3)
my_list = list(my_tuple)
my_list.append(4)  # добавляем элемент в список 
my_new_tuple = tuple(my_list)

Добавление группы элементов — метод extend():

Метод extend() позволяет добавить в список сразу несколько элементов. В качестве аргумента метод принимает итерируемый объект (например, другой список, кортеж, множество):


my_tuple = (1, 2, 3, 4)
my_list = list(my_tuple)
my_list.extend((5, 6))  # добавляем элементы в список
my_new_tuple = tuple(my_list)
        

Вставка в середину — метод insert()

Метод insert() добавляет элемент на указанную позицию в списке. Этот метод принимает два аргумента: индекс, на который следует поместить элемент, и сам элемент:


my_tuple = (1, 2, 3, 4)
my_list = list(my_tuple)
my_list.insert(0, 0)  # добавляем 0 в самое начало списка
my_new_tuple = tuple(my_list)
    

13.2 Изменение элементов

Если вам нужно поменять какой-то элемент кортежа, то продолжаем работать по схеме:


список = list(кортеж)
# меняем список тут
кортеж2 = tuple(список)

Давайте присвоим первому элементу кортежа последнее значение, а последнему — первое. Вот какой код нам для этого понадобится:


my_tuple = (1, 2, 3, 4)

my_list = list(my_tuple)
my_list[0], my_list[-1] = my_list[-1], my_list[0]  # меняем значения местами 
my_new_tuple = tuple(my_list)
print(my_new_tuple)  # (4, 2, 3, 1)
                

13.3 Удаление элементов

Удаляем элементы из кортежа по той же схеме.

Давайте приведем пример, когда мы хотим удалить из кортежа определенное значение


 atuple = ("apple", "banana", "cherry")

alist = list(atuple)
alist.remove("apple")
atuple = tuple(alist)

print(atuple)  # ('banana', 'cherry') 
        

Обратите внимание, что в конце мы присваиваем новый объект tuple переменной, которая раньше хранила ссылку на оригинальный tuple. Так можно сделать, но оригинальный tuple от этого не изменится. И если где-то выше по коду на него была ссылка, то она и продолжит указывать на оригинальный tuple.

Давайте теперь удалим последний элемент из кортежа.

Вот как будет выглядеть этот код:


atuple = ("apple", "banana", "cherry")

alist = list(atuple)
alist.pop() # удаляем последний элемент
atuple = tuple(alist)
            
print(atuple)  # ('apple', 'banana')

        

Думаю, логика вам понятна. Нельзя удалять элементы из кортежа, но если очень хочется, то можно 😊

2
Задача
Модуль 1: Python Core, 5 уровень, 12 лекция
Недоступна
Добавление элемента
Добавление элемента
2
Задача
Модуль 1: Python Core, 5 уровень, 12 лекция
Недоступна
Группировка кортежей
Группировка кортежей
Комментарии (19)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
P L Уровень 8
21 октября 2025
Структура этого уровня просто ужасна. Во второй и третьей лекции в заданиях мы вовсю реализуем ввод элементов в кортежи, а в четвёртой наконец рассказывается, как мы это делали на прошлых занятиях. Создателям стоит определиться: либо это важная информация, которую нужно знать, либо в начале уровня нужно напрячь смекалочку и додуматься самому. С текущим порядком лекций эта - просто халтурнейший филлер.
Maksym Уровень 22
15 октября 2025
Я не увидел не одного примера с методом zip(), я решил 2 задачу так: elements = tuple(int(input(f"Введите кортеж {i+1}:")) for i in range(6)) result = tuple(zip(elements[::2], elements[1::2])) update_tuple = result[0] + result[2] print("Обновленный кортеж:", update_tuple) Как по мне все понятно и красиво))
Anton Уровень 1
29 августа 2025
my_tuple = tuple(input('Ввести элемент: ') for _ in range(6)) tuple1, tuple2, tuple3 = tuple(my_tuple[0:2]), tuple(my_tuple[2:4]), tuple(my_tuple[4:]) tuple4 = tuple(tuple1 + tuple3) print(tuple4)
Юрий Уровень 44
9 августа 2025
user_elements = [] for _ in range(6): user_element = input("Введите элементы: ") user_elements.append(user_element) user_elements.append(input("Введите новый элемент: ")) user_elements = tuple(user_elements) print(user_elements)
shinobi Уровень 19
24 июля 2025
Кому не нравится ответ в последней задачи от автора задачи, вот моё решение, простое и не нагруженное, валидатор одобряет:

mylist = []
mylist.append(input("Введите элемент:"))
mylist.append(input("Введите элемент:"))
mylist.append(input("Введите элемент:"))
mylist.append(input("Введите элемент:"))
mylist.append(input("Введите элемент:"))
mylist.append(input("Введите элемент:"))
mytuple = tuple(mylist)

l1 = mytuple[0],mytuple[1]
l2 = mytuple[2],mytuple[3]
l3 = mytuple[4],mytuple[5]

t1 = tuple(l1)
t2 = tuple(l2)
t3 = tuple(l3)

tnew = tuple(t1) + tuple(t3)
print(tnew)
Long_byte Уровень 55
11 июня 2025

my_tuple = (1, 2, 3, 4)

my_list = list(my_tuple)
my_list[0], my_list[-1] = my_list[-1], my_list[0]  # меняем значения местами
my_new_tuple = tuple(my_list)
print(my_new_tuple)  # (4, 2, 3, 1)
этот пример не совсем понятен здесь внутри будет итерация по каждому элементу?
 
my_list[0], my_list[-1] = my_list[-1], my_list[0]
вот здесь разве не теряется значение 0 элемента ?
Slevin Уровень 7
24 июня 2025
Это стандартная операция по обмену значениями(ссылками) между переменными: a = 5 b = 10 a, b = b, a # Теперь: a = 10, b = 5
Дмитрий Уровень 27
16 февраля 2025
т.е. вот так делать нельзя: t1, t2, t3, t4 = tuple(a), tuple(a[0:2]), tuple(a[2:4]), tuple(a[4:]) t1 = tuple(list(t2) + list(t4)) а вот так можно: t1 = tuple(a) b = list(t1) t2, t3, t4 = tuple(b[0:2]), tuple(b[2:4]), tuple(b[4:]) t1 = tuple(list(t2) + list(t4)) ? А с чем связано?
Николай Уровень 17
14 февраля 2025
Первый раз такую странную тему вижу. Если нужно менять кортеж. То значить нам кортеж не нужен, а нужен сразу список.
brainiac Уровень 17
14 февраля 2025
Нет, нам кортеж менять не нужно(мы его и не можем изменить) Задача про то что кортеж нужно разбить на 3 кортежа
Николай Уровень 17
15 февраля 2025
Я не про задачу говорю, а про саму тему
shinobi Уровень 19
24 июля 2025
Логика такая:

mylist = [] 
mylist.append(input("Введите элемент кортежа: "))
mylist.append(input("Введите элемент кортежа: "))
mylist.append(input("Введите элемент кортежа: "))
mylist.append(input("Введите элемент кортежа: "))
mylist.append(input("Введите элемент кортежа: "))
mytuple = tuple(mylist)
mylist.append(input("Введите дополнительный элемент кортежа: "))
mytuple = tuple(mylist)
print(mytuple)

Всё просто и понятно
Fat.Lilliput Уровень 15
8 января 2026
Да! Я тоже не понимаю, зачем это! И не понимаю, почему суть Вашего вопроса никто не понял. Видимо, это нужно чисто чтоб надрать действительность, на мой взгляд такие примеры - это просто очень вредные советы. Типа, "зачем я буду думать заранее о структуре данных, нагнякаю как нибудь, потом закостылю!"
UnknownReboot Уровень 30
4 января 2025
.format(i + 1)) Зачем эта конструкция, если без нее работает?
UnknownReboot Уровень 30
5 января 2025
Я понял, i это номер элемента при запросе у пользователя!
Vitalii Уровень 12
5 января 2025
Показывают разные варианты записи. через format и до этого было {i + 1}
NAXIK Уровень 13
11 декабря 2024
Немного н понятно зачем нужны кортежи если есть списки
Александр Уровень 19 Expert
12 января 2025
кортежи обрабатываются быстрее. их рекомендуют использовать для операций с неизменяемыми наборами данных. если нужна изменяемость используют списки.

import timeit

print("Список:", timeit.timeit("x = [1, 2, 3, 4, 5]", number=1000000))
print("Кортеж:", timeit.timeit("x = (1, 2, 3, 4, 5)", number=1000000))
shinobi Уровень 19
24 июля 2025
И если представить, что в программе этих списков и кортежей - тысячи, то разрыв времени чудовищный P.S. по коду выше можно увидеть затрачиваемое на обработку время: Список: 0.024341899988939986 Кортеж: 0.007046799990348518