Содержание:развернуть
- Примеры кортежей
- Зачем использовать кортеж вместо списка?
- Работа с кортежами
-
Создание
-
Упаковка
-
Распаковка
-
Обращение к элементу и поиск в кортеже
-
Сравнение
-
Перебор
-
Сортировка
-
Удаление
- Методы и особые операции
-
Срез
-
Длина кортежа
-
Конкатенация
-
Повторение
-
Индекс заданного элемента
-
Число вхождений элемента
- Преобразование
-
tuple → str
-
tuple → list
-
tuple → dict
- Именованные кортежи
- Tuple index out of range
Кортеж (tuple) — ещё один вид последовательностей в Python.
По своей природе они очень схожи со списками, но, в отличие от последних, являются неизменяемыми.
# кортеж
immutable_tuple = (4, 5, 6)
immutable_tuple[0] = 404
>
Traceback (most recent call last):
immutable_tuple[0] = 404
TypeError: 'tuple' object does not support item assignment# список
mutable_list = [7, 8, 9]
mutable_list[0] = 1
print(mutable_list)
> [1, 8, 9]
Как видно, в литеральной форме кортеж python 3 записывается в виде последовательности элементов в круглых скобках, в то время как для списков характерны квадратные.
👉 Некоторые особенности кортежей:
- они упорядочены по позициям;
- tuple могут хранить и содержать внутри себя объекты любых типов (и даже составных);
- доступ к элементам происходит по смещению, а не по ключу;
- в рамках этой структуры данных определены все операции, основанные на применении смещения (индексирование, срез);
- кортежи поддерживают неограниченное количество уровней вложенности;
- кортежи хранят указатели на другие объекты, а значит их можно представлять, как массивы ссылок;
- они позволяют очень просто менять местами значения двух переменных.
x = 100
y = 200
x, y = y, x
print(x)
> 200
print(y)
> 100
Примеры кортежей
# пустой кортеж
empty_tuple = ()
# кортеж из 4-х элементов разных типов
four_el_tuple = (36.6, 'Normal', None, False)
# пример tuple, что содержит вложенные элементы
nested_elem_tuple = (('one', 'two'), ['three', 'four'], {'five': 'six'}, (('seven', 'eight'), ('nine', 'ten')))
print(nested_elem_tuple)
> (('one', 'two'), ['three', 'four'], {'five': 'six'}, (('seven', 'eight'), ('nine', 'ten')))
Зачем использовать кортеж вместо списка?
Тем, кто уже успел познакомиться со списками в Python, может показаться не очевидным смысл использования кортежей. Ведь фактически, списки могут делать всё то же самое и даже больше. Это вполне естественный вопрос, но, разумеется, у создателей языка найдётся на него ответ:
- Неизменяемость — именно это свойство кортежей, порой, может выгодно отличать их от списков.
- Скорость — кортежи быстрее работают. По причине неизменяемости кортежи хранятся в памяти особым образом, поэтому операции с их элементами выполняются заведомо быстрее, чем с компонентами списка.
- Безопасность — неизменяемость также позволяет им быть идеальными кандидатами на роль констант. Константы, заданные кортежами, позволяют сделать код более читаемым и безопасным.
- Использование tuple в других структурах данных — кортежи применимы в отдельных структурах данных, от которых python требует неизменяемых значений. Например ключи словарей (dicts) должны состоять исключительно из данных immutable-типа.
💡 Кроме того, кортежи удобно использовать, когда необходимо вернуть из функции несколько значений:
def get_status(service_name):
return None, f"service {service_name} is OK!"
print(type(get_status('nginx')))
> <class 'tuple'>
error, message = get_status('nginx')
print(error)
print(message)
> None
> service nginx is OK!
Работа с кортежами
Создание
Как и другие коллекции языка Питон, кортеж можно создать двумя способами.
Способ №1: Литеральное объявление:
literal_creation = ('any', 'object')
print(literal_creation)
> ('any', 'object')
print(type(literal_creation))
> <class 'tuple'>
Способ №2: Через функцию tuple()
:
tuple_creation = tuple('any iterable object')
print(tuple_creation)
> ('a', 'n', 'y', ' ', 'i', 't', 'e', 'r', 'a', 'b', 'l', 'e', ' ', 'o', 'b', 'j', 'e', 'c', 't')
print(type(tuple_creation))
> <class 'tuple'>
💁♀️ Важно, чтобы аргумент, передаваемый в tuple()
был итерируемым объектом:
incorrect_creation = tuple(777)
>
Traceback (most recent call last):
incorrect_creation = tuple(777)
TypeError: 'int' object is not iterable
Упаковка
Упаковкой кортежа называют присваивание его какой-то переменной, что, по сути, совпадает с операцией объявления.
Стоит обратить внимание 2 момента:
- Выражения
some_tuple = (11, 12, 13)
иsome_tuple = 11, 12, 13
тождественны. - Для объявления кортежа, включающего один единственный элемент, нужно использовать завершающую запятую:
is_tuple = ('a',)
is_tuple_too = 'b',
not_a_tuple = 'c'
print(type(is_tuple))
print(type(is_tuple_too))
print(type(not_a_tuple))
> <class 'tuple'>
> <class 'tuple'>
> <class 'str'>
Распаковка
Обратная операция, смысл которой в том, чтобы присвоить значения элементов кортежа отдельным переменным.
notes = ('Do', 'Re', 'Mi', 'Fa', 'Sol', 'La', 'Si')
do, re, mi, fa, sol, la, si = notes
print(mi)
> Mi
Количество переменных должно совпадать с числом элементов tuple
Однако, если необходимо получить лишь какие-то отдельные значения, то в качестве “ненужных” переменных позволено использовать символ нижнего подчеркивания “_“:
night_sky = 'Moon', 'Stars'
moon, _ = night_sky
print(moon)
> Moon
Обращение к элементу и поиск в кортеже
Обратиться к элементу кортежа можно по номеру его позиции. Причём как с начала, так и с конца:
# Mike - [0], Leo - [1], Don - [2], Raph - [3]
turtles = ('Mike', 'Leo', 'Don', 'Raph')
# Mike - [-4], Leo - [-3], Don - [-2], Raph - [-1]
print(turtles[1])
print(turtles[-2])
print(turtles[2] == turtles[-2])
> Leo
> Don
> True
Если элемент кортежа есть вложенный кортеж, то применяются дополнительные квадратные скобки (в зависимости от уровня вложенности). Например, чтобы обратиться ко второму элементу второго элемента, следует поступить так:
input_box = ('firstbox', (15, 150))
# помним про индексацию, ведущую своё начало с 0
print(input_box[1][1])
> 150
Узнать, присутствует ли объект среди элементов кортежа, можно с помощью оператора in:
song = ('Roses', 'are', 'Red')
print('Red' in song)
print('Violet' in song)
> True
> False
Сравнение
tuple_A = 2 * 2,
tuple_B = 2 * 2 * 2,
tuple_C = 'a',
tuple_D = 'z',
tuple_E = (42, 'maximum')
tuple_F = (42, 'minimum')
tuple_Z = 999,
# при сравнении кортежей, числа сравниваются по значению
print(tuple_A < tuple_B)
> True
# строки в лексикографическом порядке
print(tuple_C < tuple_D)
> True
# при равенстве элементов на одинаковых позициях, сравниваются элементы на следующих
print(tuple_E < tuple_F)
> True
# сравнение элементов продолжается до первого неравенства
print(tuple_Z < tuple_F)
> False
Перебор
Наиболее простым и очевидным способом перебрать элементы кортежа является обход его в цикле for
:
my_tuple = ('Wise', 'men', 'say', 'only', 'fools', 'rush', 'in')
# Вывести все элементы кортежа
for word in my_tuple:
print(word)
>
Wise
men
say
only
fools
rush
in
Сортировка
Нет ничего проще, чем отсортировать готовый кортеж. В этом наш друг и помощник — прекрасная функция sorted()
:
not_sorted_tuple = (10**5, 10**2, 10**1, 10**4, 10**0, 10**3)
print(not_sorted_tuple)
> (100000, 100, 10, 10000, 1, 1000)
sorted_tuple = tuple(sorted(not_sorted_tuple))
print(sorted_tuple)
> (1, 10, 100, 1000, 10000, 100000)
Удаление
Добавить или удалить элемент содержащийся в tuple нельзя, по причине всё той же неизменяемости. Однако сам кортеж стереть с цифрового лица Земли возможно. Оператор del
к нашим услугам:
some_useless_stuff = ('sad', 'bad things', 'trans fats')
del some_useless_stuff
print(some_useless_stuff)
>
Traceback (most recent call last):
print(some_useless_stuff)
NameError: name 'some_useless_stuff' is not defined
Методы и особые операции
Срез
Слайсы кортежей предельно похожи на таковые у строк, а выглядят они следующим образом:
tuple[start:fin:step]
Где start
— начальный элемент среза (включительно), fin
— конечный (не включительно) и step
— “шаг” среза.
float_tuple = (1.1, 0.5, 45.5, 33.33, 9.12, 3.14, 2.73)
print(float_tuple[0:3])
> (1.1, 0.5, 45.5)
# тождественная запись
print(float_tuple[:3])
> (1.1, 0.5, 45.5)
# если не указывать конечное значение, будут выведены все элементы до конца
print(float_tuple[0:])
> (1.1, 0.5, 45.5, 33.33, 9.12, 3.14, 2.73)
# не указывать начальное - с начала
print(float_tuple[:])
> (1.1, 0.5, 45.5, 33.33, 9.12, 3.14, 2.73)
# выведем элементы с шагом 2
print(float_tuple[-7::2])
> (1.1, 45.5, 9.12, 2.73)
# отрицательный шаг позволит вывести tuple в обратном порядке
print(float_tuple[::-1])
> (2.73, 3.14, 9.12, 33.33, 45.5, 0.5, 1.1)
Длина кортежа
Используя функцию len()
, получаем длину/количество элементов:
php = ('p', 'h', 'p')
print(len(php))
> 3
Конкатенация
Для tuple определена операция конкатенации:
storm_1 = ('Lightning')Union = (' and ')
storm_2 = ('Thunder')
print(storm_1 + Union + storm_2)
> Lightning and Thunder
Повторение
Как и в случае с конкатенацией, для кортежей, впрочем, как и для строк, определена операция повторения:
dog_do = ('woof!',)
print(dog_do * 3)
> ('woof!', 'woof!', 'woof!')
Индекс заданного элемента
Метод index()
позволяет получить индекс элемента. Достаточно передать нужное значение элемента, как аргумент метода:
rom = ('I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X')
print(rom.index('X'))
> 9
Число вхождений элемента
Метод count()
ведёт подсчет числа вхождений элемента в кортеж.
AT = ('Finn', 'Jake', 'BiMo', 'Marceline', 'Princess Bubblegum', 'BiMo')
print(AT.count('Finn'))
> 1
print(AT.count('BiMo'))
> 2
Преобразование
tuple → str
Представляем вашему вниманию лёгкий способ преобразовать кортеж в строку при помощи метода join()
:
game_name = ('Breath', ' ', 'of', ' ', 'the', ' ', 'Wild')
game_name = ''.join(game_name)
print(game_name)
> Breath of the Wild
tuple → list
Тут всё ещё проще. Для такой конвертации необходимо всего лишь передать кортеж, как аргумент функции list()
:
dig_tuple = (1111, 2222, 3333)
print(dig_tuple)
> (1111, 2222, 3333)
dig_list = list(dig_tuple)
print(dig_list)
> [1111, 2222, 3333]
tuple → dict
А вот для преобразования кортежа в словарь придётся применить небольшую хитрость, а именно — генератор словарей:
score = (('Eric', 65000), ('Stephany', 87000))
score_dict = dict((x, y) for x, y in score)
print(score_dict)
> {'Eric': 65000, 'Stephany': 87000}
Именованные кортежи
Мощная особенность и настоящая гордость языка.
Именованный кортеж (или named tuple) позволяет программисту обращаться к элементу кортежа не по индексу, а через удобочитаемый заранее заданный идентификатор.
Покажем на примере:
# для начала импортируем сам модуль
from collections import namedtuple
citizen = namedtuple("Citizen", "name age status")
Alex = citizen(name='Alex Mercer', age=27, status='show businessman')
print(Alex.name)
> Alex Mercer
print(Alex.status)
> show businessman
Точечная нотация при обращении к свойству объекта может вызвать невольную ассоциацию с классами. В общем-то одно из применений namedtuple как раз связано с ситуациями, когда нужно передать несколько свойств объекта одним куском.
Tuple index out of range
Такая ошибка может возникнуть, например, при запуске следующего кода:
i_initiate_error = ('west', 'north', 'east', 'south')
print(i_initiate_error[4])
Причина её возникновения в том, что нельзя получить доступ к индексу кортежа за пределами его длины. Эта ошибка может возникать и при совсем нетривиальных обстоятельствах, однако суть её останется прежней. Начинающим программистам стоит помнить, что индексация кортежей начинается с 0, а не с 1.
Кортежи весьма похожи на списки, но очень сложно спорить с тем, что гибкость и функционал последних намного выше. Поэтому, при написании программ, следует, в основном, пользоваться ими, а не кортежами.
Кортеж (англ. tuple) — встроенный тип данных в Python. Кортежи используются для хранения нескольких элементов в одной переменной.
Оглавление
- Особенности кортежей
- Создание кортежа
- Доступ к элементам кортежа
- Обновление кортежей
- Удаление значений в кортеже
- Удаление кортежа
- Встроенные функции кортежей
Особенности кортежей
Элементы, хранящиеся в кортеже, могут быть любого типа. Они упорядочены и неизменяемы после создания.
Синтаксис кортежей напоминает синтаксис списков. Кортежи обычно заключаются в круглые скобки, хотя это не обязательно. А списки заключаются в квадратные скобки.
От редакции Pythonist: о списках читайте в статье «Списки в Python: полное руководство для начинающих», а о разнице между кортежами и списками — в статье «Чем отличается кортеж от списка в Python».
Кортежи в Python быстрее, чем другие коллекции данных, но сохранять в них лучше всего данные, которые не понадобится изменять в дальнейшем.
Создать кортеж в Python очень просто, но есть несколько моментов, о которых вам нужно знать.
Кортежи обычно заключаются в круглые скобки, но это не обязательно. Кроме того, если в кортеже только одно значение, после него должна стоять запятая.
Ниже приведен пример создания кортежа, содержащего три элемента.
exampletuple = ("house", "unit", "apartment")
Использовав print для вывода этого кортежа, вы получите примерно следующее:
('house', 'unit', 'apartment')
Кортеж с одним элементом
Если вы хотите создать кортеж, содержащий только один элемент, обязательно добавьте запятую после элемента. Без этого Python не распознает его как кортеж.
Правильное создание кортежа в Python: exampletuple = ("house",)
.
Неправильное создание кортежа: exampletuple = ("house")
.
Использование конструктора tuple()
Для корректного создания кортежа также можно использовать конструктор.
exampletuple = tuple(("house", "unit", "apartment")) print(exampletuple) # Вывод: # ('house', 'unit', 'apartment')
Как видите, выводится то же значение, что и при создании кортежа без конструктора.
Доступ к элементам кортежа
Доступ к значениям внутри кортежа мало чем отличается от доступа к элементам в списке. В этом разделе мы рассмотрим несколько различных техник, позволяющих получить доступ к нужному вам значению.
Индексация кортежей в Python начинается с 0, поэтому для ссылки на первый элемент используется индексное значение 0. Вы можете получить доступ к элементам кортежа, используя квадратные скобки []
и индексы элементов.
Кортеж можно перебрать в цикле for
или обращаться к данным напрямую, по индексу.
От редакции Pythonist: рекомендуем почитать «Цикл for в Python: тонкости написания».
Индексы элементов кортежа
В нашем примере мы создаем кортеж с 5 элементами. Это означает, что первый элемент будет иметь индекс 0, а последний — 4. Попытка получить доступ к элементу кортежа по индексу вне этого диапазона приведет к ошибке.
После создания кортежа мы выводим значения элементов под индексами 0 и 3.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") print(exampletuple[0]) print(exampletuple[3]) # Вывод: # house # villa
Как видите, значение элемента с индексом 0 — это первая строка, house
. А под индексом 3 хранится четвертая строка, villa
.
Отрицательный индекс
В коллекции данных кортежа можно использовать отрицательный индекс. Использование отрицательных чисел означает, что отсчет идет в обратном направлении. Так, индекс -1
относится к последнему элементу кортежа.
В следующем примере мы создаем кортеж с 5 элементами. Мы будем обращаться к этим элементам, используя отрицательный индекс вместо положительного.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") print(exampletuple[-1]) print(exampletuple[-3]) # Вывод: # acreage # apartment
Как видите, мы вывели последний и третий элемент нашего кортежа.
Срезы кортежей
Чтобы получить доступ к диапазону значений из кортежа, вы можете использовать оператор среза — :
. Чтобы задать диапазон, вы указываете его начало и конец, разделяя их двоеточием. Например, [0:4]
выберет все значения с индексами от 0 до 4.
Указывать начало и конец диапазона не обязательно. Но важно, какое именно значение вы опустите. Так, например, срез [:3]
выберет все элементы от начала кортежа, т. е. от элемента с индексом 0, до элемента с индексом 3. А срез [1:]
— элементы от индекса 1 до конца кортежа.
В нашем примере ниже мы хотим получить все, что находится между индексами 1 и 3.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") print(exampletuple[1:3]) # Вывод: # ('unit', 'apartment')
Обратите внимание, что при взятии среза элемент, указанный как конец диапазона, в срез не входит. Здесь мы вывели срез [1:3]
и получили в выводе элементы с индексами 1 и 2.
Обновление кортежей
Кортежи в Python относятся к неизменяемым типам данных, поэтому вы не можете изменить кортеж после его создания. Однако вы можете создать новый кортеж из частей существующего.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") newtuple = exampletuple[0:3] print(newtuple) # Вывод: # ('house', 'unit', 'apartment')
Наш новый кортеж содержит только часть старого. Можно пойти еще дальше и объединить два кортежа в новый кортеж (мы рассмотрим это в следующем разделе).
От редакции Pythonist: на тему изменяемости объектов рекомендуем очень хорошую и подробную статью — «Python 3: изменяемый, неизменяемый…».
Конкатенация нескольких кортежей
Вам может понадобиться объединить несколько кортежей. Например, присоединить часть одного кортежа к другому.
В следующем примере мы берем часть исходного кортежа и объединяем ее с новым кортежем. Этот объединенный кортеж хранится в новой переменной.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") newtuple = exampletuple[0:3] + ("ranch", "farm") print(newtuple) # Вывод: # ('house', 'unit', 'apartment', 'ranch', 'farm')
Итак, мы успешно объединили два кортежа. Конечно, это всего лишь пример, и вы можете проделать это более чем с двумя кортежами.
Удаление значений в кортеже
Как мы уже говорили, кортежи в Python неизменяемы, но значения из них все же можно удалять. Правда, как и при конкатенации, для этого создается новый кортеж.
В приведенном ниже примере мы удаляем элемент apartment
, разрезая кортеж и не включая этот конкретный элемент в newtuple
.
exampletuple = ("house", "unit", "apartment", "villa", "acreage") newtuple = exampletuple[:2] + exampletuple[3:] print(newtuple) # Вывод: # ('house', 'unit', 'villa', 'acreage')
Элемент apartment
был успешно удален, но для этого пришлось создать новый кортеж.
Удаление кортежа
Удаление целого кортежа в Python довольно простое и может быть выполнено с помощью оператора del
. После удаления любое обращение к этому кортежу приведет к ошибке, если только вы не создадите его заново.
Ниже мы создаем кортеж, выводим его, удаляем и пытаемся вывести снова.
exampletuple = ("house", "unit", "apartment") print(exampletuple) del exampletuple print(exampletuple)
Результат:
('house', 'unit', 'apartment') Traceback (most recent call last): File "D:Pythontuple.py", line 7, in <module> print(exampletuple) NameError: name 'exampletuple' is not defined
Вывод показывает, что Python успешно удалил кортеж, поскольку при попытке вывести его во второй раз возникла ошибка.
Встроенные функции кортежей
Мы уже рассмотрели некоторые способы взаимодействия с кортежами. В таблице ниже приведены еще несколько функций, которые вы можете использовать с кортежами.
cmp(tuple1,tuple2) |
Сравнивает элементы двух кортежей. |
len(tuple) |
Возвращает длину кортежа. |
all(tuple) |
Возвращает True, если все элементы кортежа оцениваются как True или если кортеж пуст. |
any(tuple) |
Возвращает True, если хоть один элемент кортежа оценивается как True. Если кортеж пуст — возвращает False. |
max(tuple) |
Возвращает максимальное значение в кортеже. |
min(tuple) |
Возвращает минимальное значение в кортеже. |
sum(tuple) |
Суммирует все числа в кортеже. Если в кортеже встречается строка, выдает ошибку. |
sorted(tuple) |
Сортирует кортеж. |
Заключение
Надеемся, что это руководство научило вас всем основам использования кортежей в Python. Кортежи могут пригодиться вам при написании сложных программ на Python, поскольку их использование выгоднее, чем использование списка.
Перевод статьи «How to Use Python Tuples».
1 779
16 апреля 2015, 09:00
Как правильно составить свадебный кортеж
Свадебный кортеж
Королеву делает свита, а свадебную процессию – правильно подобранный транспорт. В старину это были изысканные кареты или запряженные тройкой с бубенцами сани, сейчас на смену им пришли роскошные автомобили. Как правильно организовать свадебный кортеж, читайте в этом материале.
Где взять машины
Времена, когда на свадьбу приглашались все дядюшки-автовладельцы на ржавых «шестерках» для решения транспортного вопроса, ушли в прошлое. Собирать “с миру по тачке” имеет смысл в двух случаях: если вы планируете втиснуть свадьбу в небольшой бюджет или если все ваши друзья и родственники ездят на авто бизнес-класса и с радостью согласятся один день поработать водителями. Но все же лучше, когда за логистику на свадьбе отвечает транспортная компания.
Состав свадебного кортежа
Среднестатистический свадебный кортеж обычно состоит из:
- нескольких иномарок мидл-класса,
- одного лимузина для молодоженов,
- пары автомобилей представительского класса, которые сопровождают лимузин.
Самый роскошный автомобиль предоставляется жениху и невесте. Всего в кортеже должно быть такое количество машин, которое бы вместило всех до единого друзей и родственников.
Желательно иметь отдельную машину для фотографа и видеооператора, это создаст им дополнительный комфорт и позволит лучше сделать свою работу. У них должна быть возможность свободно уезжать раньше вас в места, которые вы хотите посетить во время прогулки. Кроме того, в машине они смогут оставить свои личные вещи.
Автомобиль молодоженов
Салон автомобиля, в котором поедут молодожены, должен быть просторным, чтобы не помялось платье невесты и не пострадал букет. Цвет машины тоже имеет значение, но он выбирается исключительно на вкус молодоженов. Естественно, накануне свадьбы машина должна быть вымыта снаружи и внутри и отполирована до блеска.
Невесте будет удобно в своём пышном платье садиться в лимузин и выходить из него, ей придётся делать это довольно часто с момента отъезда в загс. Наличие системы климат-контроля в жаркий летний день тоже придётся как нельзя кстати. В лимузинах имеется и мини-бар, так что во время поездки скучать не придётся.
Читайте также: Как вести себя в лимузине: правила этикета
Украшение свадебного кортежа
Несколько главных автомобилей в вашем кортеже желательно украсить. Сейчас существует множество стильных украшений для свадебного транспорта. Декор автомобилей должен соответствовать стилю и цвету вашей свадьбы. Чтобы машины выглядели достойно, поговорите об их оформлении с вашим свадебным декоратором.
Альтернативный транспорт
Отличной находкой для свадьбы могут стать ретро-автомобили или карета с лошадьми. Перед тем, как арендовать такой транспорт, оцените его уровень комфорта и скорость передвижения. Если речь идет о лошадях, заранее выясните, можно ли на них передвигаться по тем улицам, где вы хотите прокатиться.
При выборе транспорта на свадьбу помните, что он обязательно должен стать продолжением общей концепции вашего праздника, соответствовать его стилистике и атмосфере.
Александр
В этой статье вы узнаете всё о кортежах в Python. Что такое кортежи, как их создавать, когда их использовать и какие существуют методы кортежей.
Кортеж в Python похож на список. Только в отличие от списка кортеж — неизменяемый, то есть менять его элементы после создания нельзя.
Как создать кортеж
Чтобы создать кортеж, нужно поместить все элементы, разделенные запятыми, в круглые скобки ()
. Скобки не обязательны, но рекомендуем их использовать.
Кортеж может иметь любое количество элементов разных типов (целые числа, числа с плавающей точкой, списки, строки и т. д).
# Разные типы кортежей
# Пустой кортеж
my_tuple = ()
print(my_tuple)
# Кортеж с целыми числами
my_tuple = (1, 2, 3)
print(my_tuple)
# Кортеж с разными типами данных
my_tuple = (1, "Привет", 3.4)
print(my_tuple)
# Вложенный кортеж
my_tuple = ("мышь", [8, 4, 6], (1, 2, 3))
print(my_tuple)
Вывод:
()
(1, 2, 3)
(1, 'Привет', 3.4)
('мышь', [8, 4, 6], (1, 2, 3))
Кортеж можно создать и без использования скобок. Это называется упаковкой кортежа.
# упаковываем кортеж
my_tuple = 3, 4.6, "собака"
print(my_tuple)
# точно так же можно распаковать кортеж
a, b, c = my_tuple
print(a) # 3
print(b) # 4.6
print(c) # собака
Вывод:
(3, 4.6, 'собака')
3
4.6
собака
Если нужно создать кортеж с одним элементом, все немного сложнее. Дело в том, что одного элемента в круглых скобках недостаточно. Понадобится добавить в конец запятую — иначе Python не поймет, что это кортеж.
my_tuple = ("привет")
print(type(my_tuple)) # <class 'str'>
# Создаем кортеж с одним элементом
my_tuple = ("привет",)
print(type(my_tuple)) # <class 'tuple'>
# Можно и без скобок
my_tuple = "привет",
print(type(my_tuple)) # <class 'tuple'>
Вывод:
<class 'str'>
<class 'tuple'>
<class 'tuple'>
Как получить элемент кортежа
1. По индексу
Мы можем использовать оператор индекса []
, чтобы получить доступ к элементу кортежа.
Примечание. Обратите внимание, что индексирование кортежа начинается с 0. То есть первый элемент кортежа имеет индекс 0.
Кортеж из 9 элементов будет иметь индексы от 0 до 8. Попытка получить доступ к индексу за пределами диапазона индексов кортежа (в нашем случае 9, 10 и т. д.) приведет к ошибке IndexeError.
Индекс должен быть целым числом, поэтому мы не можем использовать float или другие типы в качестве индекса. Это приведет к ошибке TypeError.
Точно так же доступ к вложенным кортежам осуществляется с помощью вложенной индексации, как показано в примере ниже.
my_tuple = ('c', 'o', 'd', 'e', 'c', 'h', 'i', 'c', 'k')
print(my_tuple[0]) # 'c'
print(my_tuple[5]) # 'h'
# Вызов print(my_tuple[9]) приведет к ошибке
# IndexError: list index out of range
# Вызов my_tuple[2.0] приведет к ошибке
# TypeError: list indices must be integers, not float
# Индекс должен быть целым числом
# вложенный кортеж
n_tuple = ("мышь", [8, 4, 6], (1, 2, 3))
# вложенное индексирование
print(n_tuple[0][3]) # 'ь'
print(n_tuple[1][1]) # 4
Вывод:
c
h
ь
4
2. По отрицательному индексу
Python допускает отрицательную индексацию коллекций (наборов значений). Она работает и с кортежами.
Индекс -1 отсылает к последнему элементу, -2 — ко второму элементу с конца и так далее.
my_tuple = ('c', 'o', 'd', 'e', 'c', 'h', 'i', 'c', 'k')
# Вывод: 'k'
print(my_tuple[-1])
# Вывод: 'c'
print(my_tuple[-9])
Вывод:
k
c
3. С помощью срезов
Получить доступ к диапазону элементов в кортеже можно с помощью оператора срезов :
.
Использование срезов еще называют слайсингом, от английского slicing — «нарезка».
my_tuple = ('c', 'o', 'd', 'e', 'c', 'h', 'i', 'c', 'k')
# элементы со 2 по 4
# Вывод: ('o', 'd', 'e')
print(my_tuple[1:4])
# элементы от начала и до второго элемента
# Вывод: ('c', 'o')
print(my_tuple[:-7])
# два последних элемента
# Вывод: ('c', 'k')
print(my_tuple[7:])
# все элементы от начала до конца
# Вывод: ('c', 'o', 'd', 'e', 'c', 'h', 'i', 'c', 'k')
print(my_tuple[:])
Вывод:
('o', 'd', 'e')
('c', 'o')
('c', 'k')
('c', 'o', 'd', 'e', 'c', 'h', 'i', 'c', 'k')
Как изменить кортеж
Никак. В отличие от списков, кортежи неизменяемы. Это значит, что элементы кортежа нельзя изменять после добавления в кортеж. Однако если элемент сам по себе является изменяемым типом данных (например, списком), его вложенные элементы менять уже можно.
Переназначить кортеж тоже можно.
my_tuple = (4, 2, 3, [6, 5])
# my_tuple[1] = 9
# Эта строка приведет к ошибке
# TypeError: 'tuple' object does not support item assignment
# Значения изменяемого элемента менять можно
my_tuple[3][0] = 9 # Вывод: (4, 2, 3, [9, 5])
print(my_tuple)
# Можно переназначить кортеж
my_tuple = ('c', 'o', 'd', 'e', 'c', 'h', 'i', 'c', 'k')
# Вывод: ('c', 'o', 'd', 'e', 'c', 'h', 'i', 'c', 'k')
print(my_tuple)
Вывод:
(4, 2, 3, [9, 5])
('c', 'o', 'd', 'e', 'c', 'h', 'i', 'c', 'k')
В Python кортежи можно объединить с помощью оператора +
. Это называется конкатенацией.
С помощью оператора *
можно повторить элементы в кортеже заданное количество раз.
Оба оператора +
и *
приводят к созданию нового кортежа.
# Конкатенация
#Вывод: (1, 2, 3, 4, 5, 6)
print((1, 2, 3) + (4, 5, 6))
# Повторение
# Вывод: ('Повторить', 'Повторить', 'Повторить')
print(("Повторить",) * 3)
Вывод:
(1, 2, 3, 4, 5, 6)
('Повторить', 'Повторить', 'Повторить')
Как удалить кортеж
Изменять элементы кортежа нельзя. Это значит, что удалять их тоже нельзя.
В Python можно только полностью удалить кортеж — с помощью ключевого слова del
.
my_tuple = ('c', 'o', 'd', 'e', 'c', 'h', 'i', 'c', 'k')
# нельзя удалить элементы кортежа
# TypeError: 'tuple' object doesn't support item deletion
# del my_tuple[3]
# зато можно удалить кортеж полностью
del my_tuple
# вызов приведет к ошибке NameError: name 'my_tuple' is not defined
print(my_tuple)
Вывод:
Traceback (most recent call last):
File "<string>", line 12, in <module>
NameError: name 'my_tuple' is not defined
Методы кортежа
Методы добавления или удаления элементов недоступны для кортежа в силу его неизменяемости.
Для кортежа существует только два метода: .count()
и .index()
.
my_tuple = ('я', 'б', 'л', 'о', 'к', 'о',)
print(my_tuple.count('о')) # Вывод: 2
print(my_tuple.index('к')) # Вывод: 4
Вывод:
2
4
Другие операции с кортежами
1. Проверка на вхождение в кортеж
Мы можем проверить, существует ли тот или иной элемент в кортеже или нет, с помощью ключевого слова in
и not in
.
my_tuple = ('я', 'б', 'л', 'о', 'к', 'о',)
print('я' in my_tuple)
print('х' in my_tuple)
print('п' not in my_tuple)
Вывод:
True
False
True
2. Итерирование по кортежу
Для перебора элементов кортежа можно использовать цикл for
.
for name in ('Андрей', 'Маша'):
print("Привет, ", name)
Вывод:
Привет, Андрей
Привет, Маша
Преимущества кортежа над списком
Кортежи очень похожи на списки, поэтому они используются в похожих ситуациях. Выбор зависит от задачи. В одном случае эффективнее будет работать кортеж, а в другом — не обойтись без списка.
Свадебный кортеж один из важнейших пунктов в организации свадьбы, ведь именно в нем вы отправитесь в ЗАГС, потом на прогулку, а затем в банкетный зал.
Конечно, можно набрать кортеж из машин ваших знакомых и гостей, но плюс в этом случае только один – хорошая экономия. Минусов же у такого варианта гораздо больше, ведь «зарулейных» гостей вы фактически обрекаете на трезвое застолье, да и машины разных марок и цветов как-то не добавляют шарма вашей свадьбе.
Куда красивее в свадебном кортеже смотрятся автомобили одной марки и модели, к тому же подобранные по цветам. Согласитесь, передвигаться от места к месту хочется на комфортабельных и престижных автомобилях. Если финансы позволяют, да и сердце взывает к эстетике, тогда вариант с наймом автомобилей в свадебный кортеж для вас. Но как правильно выбрать машины, а соответственно и организацию для своего кортежа? Как правило, выбором машин организация кортежа и заканчивается. А ведь есть столько мелочей, которые при организации свадьбы не учитываются и становятся очевидными только в сам день свадьбы. Здесь мы рассмотрим организацию свадебного кортежа во всех мельчайших деталях со всеми нюансами. Стоит заметить, что статья будет полезной и в случае, если вы собираете кортеж из автомобилей своих гостей.
Начните организацию кортежа с определения гостей, задействованных в поездках. Как правило, поездки в день свадьбы состоят из следующих этапов:
- украшение машин, подъезд к дому невесты;
- поездка из дома невесты к ЗАГСу;
- прогулка после росписи;
- подъезд к месту проведения банкета.
Есть еще один этап, но он, как правило, не требует серьезной организации кортежа – это развоз гостей после банкета (можно просто предварительно заказать такси).
Рассадку гостей по машинам нужно планировать по первым 3-м этапам, так как на них происходит существенная «перетасовка» пассажиров. Так при подъезде к дому невесты по машинам необходимо рассадить только родственников и гостей со стороны жениха. При поездке к ЗАГСу необходимо в те же машину усадить еще родственников и гостей невесты. Не забудьте, что жених и невеста едут до ЗАГСа в разных машинах! Ну а на прогулке жених с невестой уже сидят в одной машине и, соответственно, необходимо в последний раз скорректировать рассадку гостей по машинам.
Теперь необходимо скомпоновать автомобили для кортежа. Тут все зависит от количества гостей и финансовых возможностей. Минимальный вариант это машина жениха, машина невесты, операторская машина и микроавтобус для гостей. Если финансы позволяют, то можно заказать кортеж из легковых автомобилей для всех гостей. Чтобы было легче сориентироваться с автомобилями, давайте подробно рассмотрим их особенности и необходимость в них.
Автомобили жениха и невесты – обязательно должны быть одинаковой марки и модели. Как правило, у жениха черный автомобиль, у невесты белый или серебристый. Лучше всего на роль автомобилей новобрачных подойдут вседорожники (джипы) или легковые авто (не ниже D класса, например Skoda Superb, Skoda Octavia, Toyota Camry). Главное помнить, что задние сиденья должны быть просторными, чтобы там без труда поместилась невеста в своем шикарном платье.
Автомобили гостей – желательно той же марки, что и автомобили жениха и невесты и обязательно одного цвета (не ниже C класса, например Skoda Octavia, Mitsubishi Lancer, Toyota Corolla).
Mercedes SprinterМикроавтобус для гостей – вариант для тех, у кого слишком много гостей на прогулке, либо все деньги ушли на платье невесты и теперь не хватает на легковой свадебный кортеж. Обычно на 18-20 мест (например, Mercedes Sprinter, Ford Transit, Iveco Daily). Главное не забывайте, что гости, которых возят с комфортом, на свадьбе гораздо веселее! Обязательно посмотрите, чтобы микроавтобус был в хорошем состоянии, если свадьба летом, то обязательно с кондиционером.
Автомобиль оператора – очень важная машина, ведь именно она уезжает позже всего кортежа, а приезжает раньше. А еще из нее периодически оператор с камерой снимает весь свадебный кортеж на ходу. Часто, оператор ездит на своей машине вместе с фотографом, но иногда все же необходимо нанять им отдельную машину. Тут, в прочем, не стоит сильно тратиться, ведь машина в кадр обычно не попадает, а значит можно взять любую машину, которая не будет сильно выбиваться из свадебного кортежа.
Отдельно стоит выделить лимузин. В последние годы часто нанимают лимузин, но как новинка этот класс уже «пообтерся» и мало кого удивляет. Стоит это не дешево, а практичности маловато. Маневрирует этот транспорт в узких улочках с трудом, да и раздельно подъехать к ЗАГСу тоже не получится.
Ну а теперь, когда с составом свадебного кортежа уже определились, стоит сконцентрироваться на мелочах, которые и создают весь ваш праздник. Все следующие пункты определите для себя и обсудите с организацией, в которой будете заказывать машины на свадьбу.
Музыка. Саундтрек всего вашего свадебного дня дело очень важное! Музыка сопровождает все торжество, всю прогулку, весь банкет. Обязательно определитесь, что должно играть в машинах в момент поездки. Будет ли это, какое то определенное радио или специальный диск с вашими любимыми песнями – это уже решаете сами. Но не забудьте, что музыка должна нести как можно меньше смысловой нагрузки и как можно больше праздничного настроения.
Водители. Обязательно должны опрятно выглядеть и вести себя вежливо. Если вам хочется создать некий эффект помпезности, то можно попросить всех водителей быть в костюмах и открывать двери пассажирам. Скорее всего, за это придется, хоть и не много, но заплатить.
Украшения. Можно заказать пошив украшений на машины специально для вас, можно купить или взять в аренду в праздничном агентстве, а можно и смастерить своими руками. Не переборщите с украшениями, ведь если водителю из-за них будет плохо видно дорожную обстановку, то это уже опасно! Желательно иметь запасное украшение, если вдруг основное слетит на дороге. Предупредите водителей, если украшать машины должны именно они, а не друзья жениха.
Маршрут. Заранее и очень тщательно продумайте маршрут вашей прогулки. При составлении маршрута учитывайте, что чем меньше будет путь от точки к точке, тем вероятней, что вам не придется стоять в пробке. Если этот пункт вызывает затруднение, то обратитесь за помощью к главному водителю кортежа, он обязательно поможет вам грамотно составить маршрут. Если время на поездку от одного места до другого будет слишком мало, то придется «гнать», а значит жертвовать безопасностью и украшениями!
Съемка свадебного кортежа. Если вы хотите, чтобы ваш кортеж был запечатлен в движении, то обязательно обговорите это заранее и с оператором и с водителями.
Багаж. Определите, в какой машине должны лежать подаренные вам цветы, в какой легкая закуска и выпивка для прогулки.
Ответственное лицо. Вам в этот день будет не до общения с водителями, так что обязательно выделите кого-нибудь ответственного из своих друзей или родственников, кто будет общаться с водителями, корректировать маршрут по месту и производить оплату.
Ну, вот вроде и все! Надеемся, эти советы помогут вам в организации свадебного кортежа и проблем на свадьбе не возникнет.