tuple: Кортежи в Python
Введение | |
Пример | |
Кортеж из списка | |
Неизменяемость | |
sorted | |
collections.namedtuple | |
Похожие статьи |
Введение
Кортеж в Python это:
- последовательность элементов, которые разделены между собой запятой и заключены в скобки
- неизменяемый упорядоченный тип данных
Грубо говоря, кортеж - это список, который нельзя изменить. То есть, в кортеже есть только права на чтение. Это может быть защитой от случайных изменений.
Создать пустой кортеж:
t = tuple() print(t)
()
Кортеж может состоять из одного элемента:
# Это строка s = ("b") print(type(s)) print(s) # Это кортеж t = ("b",) print(type(t)) print(t)
Обратите внимание на запятую
<class 'str'> b <class 'tuple'> ('b',)
Пример
point = (3, 9) print(point) print(point[0]) print(point[1])
(3, 9) 3 9
Элементов, разумеется, может быть болье двух
t_point = (2, 4, 6) print(t_point) for c in t_point: print(c)
(2, 4, 6) 2 4 6
Кортеж из списка:
list_cities = ["benalmadena", "cordoba", "fuengirola", "malaga", "torremolinos"] tuple_cities = tuple(list_cities) print(type(list_cities)) print(type(tuple_cities)) print(tuple_cities)
<class 'list'> <class 'tuple'> ('benalmadena', 'cordoba', 'fuengirola', 'malaga', 'torremolinos')
К объектам в кортеже можно обращаться, как и к объектам списка, по порядковому номеру:
# By index print(tuple_cities[0])
benalmadena
Неизменяемость
Так как кортеж неизменяем, присвоить новое значение нельзя:
tuple_cities[1] = "barcelona"
Traceback (most recent call last): File "tuple_ex.py", line 18, in <module> tuple_cities[1] = "barcelona" TypeError: 'tuple' object does not support item assignment
TypeError можно обработать с помощью except
try: tuple_cities[1] = "barcelona" except TypeError: print("Can't change tuple")
Can't change tuple
sorted()
Функция sorted сортирует элементы кортежа по возрастанию и возвращает новый список с отсортированными элементами:
tuple_cities = ("cordoba", "fuengirola", "malaga", "torremolinos", "benalmadena") sorted_list_cities = sorted(tuple_cities) print(type(sorted_list_cities)) print(sorted_list_cities)
<class 'list'> ['benalmadena', 'cordoba', 'fuengirola', 'malaga', 'torremolinos']
namedtuple
from collections import namedtuple Point = namedtuple("Point", "x y") point = Point(7, 8) print(point.x) print(point[0]) print(point.y) print(point[1])
7 7 8 8
Tpoint = namedtuple("Tpoint", "x y z") t_point = Tpoint(10, 11, 12) print(t_point.x) print(t_point.y) print(t_point.z)
10 11 12