Кортеж (tuple) представляет последовательность элементов, которая во многом похожа на список за тем исключением, что кортеж является неизменяемым (immutable) типом. Поэтому мы не можем добавлять или удалять элементы в кортеже, изменять его.
Для создания кортежа используются круглые скобки, в которые помещаются его значения, разделенные запятыми:
user = ("Tom", 23) print(user)
Также для определения кортежа мы можем просто перечислить значения через запятую без применения скобок:
user = "Tom", 23 print(user)
Если вдруг кортеж состоит из одного элемента, то после единственного элемента кортежа необходимо поставить запятую:
user = ("Tom",)
Для создания кортежа из списка можно передать список в функцию tuple(), которая возвратит кортеж:
users_list = ["Tom", "Bob", "Kate"] users_tuple = tuple(users_list) print(users_tuple) # ("Tom", "Bob", "Kate")
Обращение к элементам в кортеже происходит также, как и в списке по индексу. Индексация начинается также с нуля при получении элементов с начала списка и с -1 при получении элементов с конца списка:
users = ("Tom", "Bob", "Sam", "Kate") print(users[0]) # Tom print(users[2]) # Sam print(users[-1]) # Kate # получим часть кортежа со 2 элемента по 4 print(users[1:4]) # ("Bob", "Sam", "Kate")
Но так как кортеж — неизменяемый тип (immutable), то мы не сможем изменить его элементы. То есть следующая запись работать не будет:
users[1] = "Tim"
При необходимости мы можем разложить кортеж на отдельные переменные:
user = ("Tom", 22, False) name, age, isMarried = user print(name) # Tom print(age) # 22 print(isMarried) # False
Особенно удобно использовать кортежи, когда необходимо возвратить из функции сразу несколько значений. Когда функция возвращает несколько значений, фактически она возвращает в кортеж:
def get_user(): name = "Tom" age = 22 is_married = False return name, age, is_married user = get_user() print(user[0]) # Tom print(user[1]) # 22 print(user[2]) # False
С помощью встроенной функции len() можно получить длину кортежа:
user = ("Tom", 22, False) print(len(user)) # 3
Перебор кортежей
Для перебора кортежа можно использовать стандартные циклы for и while. С помощью цикла for:
user = ("Tom", 22, False) for item in user: print(item)
С помощью цикла while:
user = ("Tom", 22, False) i = 0 while i < len(user): print(user[i]) i += 1
Как для списка с помощью выражения элемент in кортеж
можно проверить наличие элемента в кортеже:
user = ("Tom", 22, False) name = "Tom" if name in user: print("Пользователя зовут Tom") else: print("Пользователь имеет другое имя")