Python3 Кортеж
Кортежи Python похожи на списки, за исключением того, что элементы кортежа нельзя изменять.
Кортежи используют круглые скобки( ), а списки — квадратные скобки[ ]。
Создать кортеж просто: просто добавьте элементы в круглых скобках через запятую.

Пример (Python 3.0+)
>>> tup2 = (1, 2, 3, 4, 5 )
>>> tup3 = "a", "b", "c", "d" # Круглые скобки тоже не нужны
>>> type(tup3)
<class 'tuple'>
Создание пустого кортежа
tup1 = ()
Когда кортеж содержит только один элемент, нужно добавить запятую после элемента,, иначе круглые скобки будут восприняты как оператор:
Пример (Python 3.0+)
>>> type(tup1) # Без запятой тип — целое число
<class 'int'>
>>> tup1 = (50,)
>>> type(tup1) # С запятой тип — кортеж
<class 'tuple'>
Кортежи похожи на строки тем, что индексация начинается с 0, и к ним можно применять срезы, объединять и т. д.

Доступ к кортежам
Кортежи могут использовать номера индексов для доступа к значениям в кортеже, как в следующем примере:
Пример (Python 3.0+)
Вывод приведенного выше примера:
tup1[0]: Google tup2[1:5]: (2, 3, 4, 5)
Изменение кортежей
Значения элементов кортежа нельзя изменять, но мы можем объединять и комбинировать кортежи, как в следующем примере:
Пример (Python 3.0+)
Вывод приведенного выше примера:
(12, 34.56, 'abc', 'xyz')
Удаление кортежей
Значения элементов кортежа не разрешается удалять, но мы можем использовать оператор del для удаления всего кортежа, как в следующем примере:
Пример (Python 3.0+)
После удаления кортежа в вышеприведенном примере вывод переменной вызовет сообщение об исключении. Вывод будет следующим:
删除后的元组 tup :
Traceback (most recent call last):
File "test.py", line 8, in <module>
print (tup)
NameError: name 'tup' is not defined
Операции с кортежами
Как и строки, кортежи могут использовать+、+=и*+ для операций. Это означает, что их можно объединять и копировать, и после операции будет создан новый кортеж.
| Выражение Python | Результат | Описание |
|---|---|---|
len((1, 2, 3)) | 3 | Подсчет количества элементов |
>>> a = (1, 2, 3) >>> b = (4, 5, 6) >>> c = a+b >>> c (1, 2, 3, 4, 5, 6) | (1, 2, 3, 4, 5, 6) | Конкатенация; c — новый кортеж, содержащий все элементы из a и b. |
>>> a = (1, 2, 3) >>> b = (4, 5, 6) >>> a += b >>> a (1, 2, 3, 4, 5, 6) | (1, 2, 3, 4, 5, 6) | Конкатенация; a становится новым кортежем, содержащим все элементы из a и b. |
('Hi!',) * 4
| ('Hi!', 'Hi!', 'Hi!', 'Hi!') | Повторение |
3 in (1, 2, 3) | True | Проверка наличия элемента |
for x in (1, 2, 3):
print (x, end=" ") | 1 2 3 | Итерация |
Индексация и срезы кортежей
Поскольку кортеж также является последовательностью, мы можем обращаться к элементам в указанных позициях кортежа, а также срезать диапазон элементов по индексам, как показано ниже:
Кортеж:
tup = ('Google', 'Example', 'Taobao', 'Wiki', 'Weibo','Weixin')

| Выражение Python | Результат | Описание |
|---|---|---|
| tup[1] | 'Example' | Прочитать второй элемент |
| tup[-2] | 'Weibo' | Чтение в обратном порядке; прочитать предпоследний элемент |
| tup[1:] | ('Example', 'Taobao', 'Wiki', 'Weibo', 'Weixin') | Срез: все элементы, начиная со второго элемента |
| tup[1:4] | ('Example', 'Taobao', 'Wiki') | Срез: от второго элемента до четвёртого элемента (индекс 3) |
Рабочий пример выглядит следующим образом:
Пример
>>> tup[1]
'Example'
>>> tup[-2]
'Weibo'
>>> tup[1:]
('Example', 'Taobao', 'Wiki', 'Weibo', 'Weixin')
>>> tup[1:4]
('Example', 'Taobao', 'Wiki')
>>>
Встроенные функции кортежей
Кортежи Python включают следующие встроенные функции
| Порядковый номер | Метод и описание | Пример |
|---|---|---|
| 1 | len(tuple) Подсчитывает количество элементов в кортеже. |
>>> tuple1 = ('Google', 'Example', 'Taobao')
>>> len(tuple1)
3
>>>
|
| 2 | max(tuple) Возвращает максимальное значение элементов в кортеже. |
>>> tuple2 = ('5', '4', '8')
>>> max(tuple2)
'8'
>>>
|
| 3 | min(tuple) Возвращает минимальное значение элементов в кортеже. |
>>> tuple2 = ('5', '4', '8')
>>> min(tuple2)
'4'
>>>
|
| 4 | tuple(iterable) Преобразует итерируемую последовательность в кортеж. |
>>> list1= ['Google', 'Taobao', 'Example', 'Baidu']
>>> tuple1=tuple(list1)
>>> tuple1
('Google', 'Taobao', 'Example', 'Baidu')
|
О неизменяемости кортежей
Так называемая неизменяемость кортежа означает, что содержимое в памяти, на которое указывает кортеж, неизменяемо.
>>> tup[0] = 'g' # Изменение элементов не поддерживается
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' объект не поддерживает присваивание элементов
>>> id(tup) # Проверить адрес памяти
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800 # Адрес памяти отличается
Из приведённого выше примера видно, что при повторном присваивании кортеж tup привязывается к новому объекту, а не изменяет исходный объект.
Другие расширения