Найти в Дзене
Удалёнка

Python. Кортежи

Оглавление

Кортеж (tuple) представляет последовательность элементов, которая во многом похожа на список за тем исключением, что кортеж является неизменяемым (immutable) типом. Поэтому мы не можем добавлять или удалять элементы в кортеже, изменять его.

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

tom = ("Tom", 23)

print(tom)     # ("Tom", 23)

Также для определения кортежа мы можем просто перечислить значения через запятую без применения скобок:

tom = "Tom", 23

print(tom)     # ("Tom", 23)

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

tom = ("Tom",)

Для создания кортежа из другого набора элементов, например, из списка, можно передать список в функцию tuple(), которая возвратит кортеж:

data = ["Tom", 37, "Google"]

tom = tuple(data)

print(tom)      # ("Tom", 37, "Google")

С помощью встроенной функции len() можно получить длину кортежа:

tom = ("Tom", 37, "Google")

print(len(tom))     # 3

Обращение к элементам кортежа

Обращение к элементам в кортеже происходит также, как и в списке, по индексу. Индексация начинается также с нуля при получении элементов с начала списка и с -1 при получении элементов с конца списка:

tom = ("Tom", 37, "Google", "software developer")

print(tom[0])       # Tom

print(tom[1])       # 37

print(tom[-1])      # software developer

Но так как кортеж - неизменяемый тип (immutable), то мы не сможем изменить его элементы. То есть следующая запись работать не будет:

tom[1] = "Tim"

При необходимости мы можем разложить кортеж на отдельные переменные:

name, age, company, position = ("Tom", 37, "Google", "software developer")

print(name)         # Tom

print(age)          # 37

print(position)     # software developer

print(company)     # Google

Получение подкортежей

Как и в списках, можно получить часть кортежа в виде другого кортежа

tom = ("Tom", 37, "Google", "software developer")

# получем подкортеж с 1 по 3 элемента (не включая)

print(tom[1:3])     # (37, "Google")

# получем подкортеж с 0 по 3 элемента (не включая)

print(tom[:3])     # ("Tom", 37, "Google")

# получем подкортеж с 1 по послдений элемент

print(tom[1:])     # (37, "Google", "software developer")

Кортеж как параметр и результат функций

Особенно удобно использовать кортежи, когда необходимо возвратить из функции сразу несколько значений. Когда функция возвращает несколько значений, фактически она возвращает в кортеж:

def get_user():

name = "Tom"

age = 22

company = "Google"

return name, age, company

user = get_user()

print(user)     # ("Tom", 37, "Google")

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

def print_person(name, age, company):

print(f"Name: {name}  Age: {age}  Company: {company}")

tom = ("Tom", 22)

print_person(*tom, "Microsoft")     # Name: Tom  Age: 22  Company: Microsoft

bob = ("Bob", 41, "Apple")

print_person(*bob)      # Name: Bob  Age: 41  Company: Apple

Перебор кортежей

Для перебора кортежа можно использовать стандартные циклы for и while. С помощью цикла for:

tom = ("Tom", 22, "Google")

for item in tom:

print(item)

С помощью цикла while:

tom = ("Tom", 22, "Google")

i = 0

while i < len(tom):

print(tom[i])

i += 1

Проверка наличия значения

Как для списка с помощью выражения элемент in кортеж можно проверить наличие элемента в кортеже:

user = ("Tom", 22, "Google")

name = "Tom"

if name in user:

print("Пользователя зовут Tom")

else:

print("Пользователь имеет другое имя")