Типы последовательностей и изменяемость
Прежде чем мы начнем говорить о кортежах и словарях, мы должны ввести два важных понятия: типы последовательностей и изменчивость.
Тип последовательности - это тип данных в Python, который может хранить более одного значения (или менее одного, поскольку последовательность может быть пустой), и эти значения можно просматривать последовательно (отсюда и название), элемент за элементом.
Поскольку цикл for
- это инструмент, специально разработанный для итерации по последовательностям, мы можем выразить определение как: последовательность - это данные, по которым можно итерироваться с помощью цикла for
.
Пока что Вы встретили одну последовательность Python - список. Список представляет собой классический пример последовательности Python, хотя есть некоторые другие последовательности, о которых стоит упомянуть, и мы собираемся представить их Вам сейчас.
Второе понятие - изменяемость - это свойство любых данных Python, которое описывает их готовность к произвольному изменению во время выполнения программы. Есть два типа данных Python: изменяемые и неизменяемые.
Изменяемые данные могут быть свободно изменены в любое время - мы называем такую операцию операцией in situ.
In situ - это латинская фраза, которая буквально переводится как на месте. Например, следующая инструкция изменяет данные in situ:
list.append(1)
Неизменяемые данные нельзя изменить таким образом .
Представьте, что список можно только составить и прочитать. Вы не сможете ни добавить, ни удалить из него какой-либо элемент. Это означает, что добавление элемента в конец списка потребует воссоздания списка с нуля.
Вам нужно будет создать полностью новый список, состоящий из всех элементов уже существующего списка плюс новый элемент.
Тип данных, о котором мы хотим Вам рассказать, - это кортеж. Кортеж - это неизменяемый тип последовательности. Он может вести себя как список, но не может быть изменен in situ.
Что такое кортеж?
Первое и самое четкое различие между списками и кортежами - это синтаксис, используемый для их создания: кортежи предпочитают использовать круглые скобки, тогда как списки любят видеть квадратные скобки, хотя также возможно создать кортеж просто из набора значений, разделенных запятыми .
Посмотрите на пример:
tuple_1 = (1, 2, 4, 8)
tuple_2 = 1., .5, .25, .125
Есть два кортежа, каждый из которых содержит четыре элемента.
Давайте выведем их:
tuple_1 = (1, 2, 4, 8)
tuple_2 = 1., .5, .25, .125
print(tuple_1)
print(tuple_2)
Вот что вы должны увидеть в консоли:
(1, 2, 4, 8)
(1.0, 0.5, 0.25, 0.125)
output
Примечание: каждый элемент кортежа может быть любого типа (с плавающей запятой, целочисленным или любым другим, еще не введенным типом данных).
Как создать кортеж?
Возможно создание пустого кортежа - тогда скобки обязательны:
empty_tuple = ()
Если вы хотите создать одноэлементный кортеж, Вы должны принять во внимание тот факт, что по причинам синтаксиса (кортеж должен отличаться от обычного одиночного значения) Вы должны закончить кортеж запятой:
one_element_tuple_1 = (1, )
one_element_tuple_2 = 1.,
Удаление запятых не испортит программу в синтаксическом смысле, но вместо этого Вы получите две одиночные переменные, а не кортежи.