Чем кортеж отличается от списка?


#1

Есть список

my_array = ['number1', True, 2, 'number3', 4, 'number5', True]

И есть кортеж

my_tuple = ('number1', True, 2, 'number3', 4, 'number5', True)

Кроме явного отличия в синтаксисе (в виде круглых скобочек вместо квадратных), в чём отличие обыкновенного списка от кортежа?


#2
def drawLine():
    print('_' * 40)
#________________________________________________________________________________


def main():
    my_array = ['number1', True, 2, 'number3', 4, 'number5', True] # Array consists multiple-type variables.
    print(type(my_array)) # According to definition, Array is a list. 
    my_array.append(6) # Is Changable.
    for el in my_array:
        print(el)
    drawLine()
#___________________________________________
    my_list = [1,2,3,4,5] # List consists single-type variables.
    print(type(my_list))
    my_list.append(6) # Is Changable.
    for el in my_list:
        print(el)
    drawLine()
#___________________________________________
    my_tuple = ('number1', True, 2, 'number3', 4, 'number5', True) # Tuple consists multiple-type variables.
    print(type(my_tuple))
    try:
        my_tuple.append(6) # Is Unchangable
    except Exception as message:
        print(message)
    for el in my_tuple:
        print(el)
    drawLine()
#___________________________________________


if __name__ == '__main__':
    main()

Попробуй запустить эту программу и всё поймёшь.

На всякий случай также вставлю сюда вывод:

number1
True
2
number3
4
number5
True
6
________________________________________

1
2
3
4
5
6
________________________________________

'tuple' object has no attribute 'append'
number1
True
2
number3
4
number5
True
________________________________________
Press any key to continue . . .

#3

Об этом и многом другом Вы можете узнать на курсе Python Essential.


#4

Есть список

my_array = ['number1', True, 2, 'number3', 4, 'number5', True]

И есть кортеж

my_tuple = ('number1', True, 2, 'number3', 4, 'number5', True)

Кроме явного отличия в синтаксисе (в виде круглых скобочек вместо квадратных), в чём отличие обыкновенного списка от кортежа?

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

А кортеж не изменяем его элементы в отличие от списков не заменить, но кортежи легче и быстрей работают.

Но и то и другое полезно, в разных ситуациях можно применять их по разному. Либо пользоваться только списками или кортежами или использовать их по переменно, по мере необходимости.


#5

Приветствую.
Тоже недавно изучаю Python
Вставлю свои 5 копеек :wink:
Не смотря на то, что кортеж есть "immutable sequences"
если уж вдруг у Вас будет нужда поизменять последовательность,
можете сконвертировать в список, добавить/вставить/удалить элемент,
потом обратно засунуть в кортеж...
Или использовать лайфхаки типа (из предыдущего примера)

    my_tuple = ('number1', True, 2, 'number3', 4, 'number5', True)
    print(my_tuple) # оригинал

    my_tuple = my_tuple+('added1',)
    print(my_tuple) # а-ля добавили элемент в конец

    my_tuple = my_tuple[:1]+('added2',)+ my_tuple[1:]
    print(my_tuple) # а-лядобавили в индекс 1 (раздвинули)

    my_tuple = my_tuple[:1]+('inserted',)+ my_tuple[2:]
    print(my_tuple) # а-ля заменили значение :)

    my_tuple = my_tuple[:1] + my_tuple[2:len(my_tuple)-1]
    print(my_tuple)   # а-ля вернули все как было