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)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Максим Рівень 9
18 березня 2025
але ж по факту ми не змінюємо кортеж...

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

Ось як виглядатиме цей код:



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

alist = list(atuple)
alist.pop() # видаляємо останній елемент
atuple = tuple(alist)

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


Думаю, логіка вам зрозуміла. Не можна видаляти елементи з кортежу, але якщо дуже хочеться, то можна 😊
DmitriyK_py Рівень 46
24 жовтня 2024