НОЧУ ДПО "Национальный открытый университет "ИНТУИТ"
Опубликован: 24.01.2021 | Доступ: свободный | Студентов: 2489 / 106 | Длительность: 03:57:00
Лекция 8:

Кортежи

< Лекция 1 || Лекция 8: 1234

Смотреть на youtube

Кортеж (tuple) - понятие, широко используемое в математике. Для программиста кортеж - это некоторая запись, поля которой могут быть разного типа. Кортеж наследует свойства последовательности, так что элементы кортежа имеют индексы, можно получить прямой доступ к элементу кортежа по его индексу, можно выполнять срезы, получая подпоследовательности элементов, можно выполнять операцию конкатенации кортежей.

Кортежи во-многом похожи на список, который тоже можно рассматривать как запись. Главное отличие кортежей от списков в том, что списки представляют изменяемый тип, а кортеж является неизменяемым типом. Элементы кортежа доступны для чтения, но недоступны для записи. Все операции, изменяющие кортеж, являются функциями, создающими новый экземпляр кортежа. Достоинство неизменяемых типов в том, что они обеспечивают более безопасный способ работы с объектами. Объект изменяемого типа может иметь множество имен (псевдонимов) , так что изменение содержимого объекта, выполненное в какой-то части программы одним из псевдонимов, немедленно отражается на всех псевдонимах, связанных с этим объектом. Это небезопасно и требует аккуратного программирования. Для неизменяемых типов такая ситуация не возникает. Пока изменения объекта не выполняются, все псевдонимы могут работать с объектом, читая содержимое его полей. Когда кто-то попытается изменить объект, то создается новый объект, у которого будет один владелец в момент создания.

Константа, имеющая тип кортеж, - это последовательность элементов возможно разного типа, заключенная в круглые скобки.

Доступ к элементам кортежа

Кортеж - это потомок последовательности. Следовательно, возможен доступ к элементу кортежа по его индексу. Доступ к подпоследовательности элементов кортежа задается соответствующим срезом. Если в кортеже n элементов, то индекс элемента должен находиться в пределах от 0 до n - 1. Это же верно для начального индекса среза. Конечный индекс среза может выходить за допустимые пределы, - такой срез задает подпоследовательность, заканчивающуюся последним элементом кортежа.

Кортеж является неизменяемым типом, поэтому доступ возможен только для чтения, но не для записи.

Рассмотрим пример:

  
#Примеры работы с кортежами - class tuple
def test1():    
    #кортежи - индексируемый, неизменяемый тип
    cort1 = (2, 5, ('two', 'five'))
    cort2 = (2, 5, [2, 5], {2, 5}, {'two' : "два", 'five' : "пять"}, ('two', 'five') )
    print(cort1, type(cort1))
    print(cort2)
    item = cort1[2]
    slice1 = cort1[1:5]
    print (item)
    print(slice1)
    #item1 = cort1[3]
    #cort1[2] = 77
    #cort2[3:5] = (55, 77)
test1()

Результаты работы:


Заметьте, три последних оператора закомментированы. Попытка раскомментировать любой из этих операторов приведет к ошибке в период выполнения теста. Первый оператор пытается получить доступ к элементу кортежа, индекс которого выходит за допустимые пределы. Два следующих оператора пытаются изменить значения элементов кортежа, не создавая новый кортеж, что противоречит принципам неизменяемого типа.

< Лекция 1 || Лекция 8: 1234
Алексей Авилов
Алексей Авилов

Неужели не нашлось русских специалистов, чтобы записать курс по пайтону ? Да, можно включить переводчик и слушать с переводом, но это что? Это кто-то считает хорошим и понятным курсом для начинающих? 

Елена Лаптева
Елена Лаптева

Думаю. что не смогу его закончить. Хотелось предупредить других - не тратьте зря время, ищите другой курс.