Python3 Кортеж

Кортежи Python похожи на списки, за исключением того, что элементы кортежа нельзя изменять.

Кортежи используют круглые скобки( ), а списки — квадратные скобки[ ]。

Создать кортеж просто: просто добавьте элементы в круглых скобках через запятую.

Пример (Python 3.0+)

>>> tup1 = ('Google', 'Example', 1997, 2000)
>>> tup2 = (1, 2, 3, 4, 5 )
>>> tup3 = "a", "b", "c", "d"   # Круглые скобки тоже не нужны
>>> type(tup3)
<class 'tuple'>

Создание пустого кортежа

tup1 = ()

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

Пример (Python 3.0+)

>>> tup1 = (50)
>>> type(tup1)     # Без запятой тип — целое число
<class 'int'>

>>> tup1 = (50,)
>>> type(tup1)     # С запятой тип — кортеж
<class 'tuple'>

Кортежи похожи на строки тем, что индексация начинается с 0, и к ним можно применять срезы, объединять и т. д.


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

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

Пример (Python 3.0+)

#!/usr/bin/python3 tup1 = ('Google', 'Example', 1997, 2000) tup2 = (1, 2, 3, 4, 5, 6, 7 ) print ("tup1[0]: ", tup1[0]) print ("tup2[1:5]: ", tup2[1:5])

Вывод приведенного выше примера:

tup1[0]:  Google
tup2[1:5]:  (2, 3, 4, 5)

Изменение кортежей

Значения элементов кортежа нельзя изменять, но мы можем объединять и комбинировать кортежи, как в следующем примере:

Пример (Python 3.0+)

#!/usr/bin/python3 tup1 = (12, 34.56) tup2 = ('abc', 'xyz') # Следующая операция по изменению элемента кортежа недопустима. # tup1[0] = 100 # Создать новый кортеж tup3 = tup1 + tup2 print (tup3)

Вывод приведенного выше примера:

(12, 34.56, 'abc', 'xyz')

Удаление кортежей

Значения элементов кортежа не разрешается удалять, но мы можем использовать оператор del для удаления всего кортежа, как в следующем примере:

Пример (Python 3.0+)

#!/usr/bin/python3 tup = ('Google', 'Example', 1997, 2000) print (tup) del tup print ("Кортеж tup после удаления:") print (tup)

После удаления кортежа в вышеприведенном примере вывод переменной вызовет сообщение об исключении. Вывод будет следующим:

删除后的元组 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 = ('Google', 'Example', 'Taobao', 'Wiki', 'Weibo','Weixin')
>>> tup[1]
'Example'
>>> tup[-2]
'Weibo'
>>> tup[1:]
('Example', 'Taobao', 'Wiki', 'Weibo', 'Weixin')
>>> tup[1:4]
('Example', 'Taobao', 'Wiki')
>>>

Встроенные функции кортежей

Кортежи Python включают следующие встроенные функции

Порядковый номерМетод и описаниеПример
1len(tuple)
Подсчитывает количество элементов в кортеже.
>>> tuple1 = ('Google', 'Example', 'Taobao')
>>> len(tuple1)
3
>>> 
2max(tuple)
Возвращает максимальное значение элементов в кортеже.
>>> tuple2 = ('5', '4', '8')
>>> max(tuple2)
'8'
>>> 
3min(tuple)
Возвращает минимальное значение элементов в кортеже.
>>> tuple2 = ('5', '4', '8')
>>> min(tuple2)
'4'
>>> 
4tuple(iterable)
Преобразует итерируемую последовательность в кортеж.
>>> list1= ['Google', 'Taobao', 'Example', 'Baidu']
>>> tuple1=tuple(list1)
>>> tuple1
('Google', 'Taobao', 'Example', 'Baidu')

О неизменяемости кортежей

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

>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')
>>> 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 привязывается к новому объекту, а не изменяет исходный объект.

Другие расширения