Кортежи (Tuples) в Python: Определение, использование и отличия от списков
Что такое кортеж
Кортеж (tuple) — упорядоченная, неизменяемая коллекция объектов. Кортежи — последовательности, как списки. Отличия: кортежи нельзя изменять, они используют круглые скобки, а списки — квадратные.
Создание кортежа — перечисление значений через запятую. Круглые скобки опциональны:
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5)
tup3 = "a", "b", "c", "d"
Пустой кортеж — две скобки без содержимого:
tup1 = ()
Кортеж с одним элементом требует запятую:
tup1 = (50,)
Индексы начинаются с 0, поддерживаются срезы и конкатенация.
Доступ к значениям в кортежах
Используются квадратные скобки со срезами и индексами:
Live Demo#!/usr/bin/python
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7)
print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]
Результат:
tup1[0]: physics tup2[1:5]: [2, 3, 4, 5]
Обновление кортежей
Кортежи неизменяемы — нельзя изменить значения элементов. Но можно создать новый кортеж из частей существующих:
Live Demo#!/usr/bin/python
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# tup1[0] = 100 # Недопустимо для кортежей
tup3 = tup1 + tup2
print tup3
Результат:
(12, 34.56, 'abc', 'xyz')
Удаление элементов кортежа
Удалить отдельный элемент нельзя. Можно собрать новый кортеж без нежелательных элементов.
Чтобы удалить весь кортеж, используйте del:
Live Demo#!/usr/bin/python
tup = ('physics', 'chemistry', 1997, 2000)
print tup
del tup
print "After deleting tup : "
print tup
Результат (исключение, так как кортеж больше не существует):
('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
File "test.py", line 9, in
print tup
NameError: name 'tup' is not defined
Основные операции с кортежами
Кортежи реагируют на + и * как строки: конкатенация и повторение, результат — новый кортеж. Поддерживают все общие операции последовательностей:
| Выражение Python | Результат | Описание |
|---|---|---|
| len((1, 2, 3)) | 3 | Длина |
| (1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | Конкатенация |
| ('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | Повторение |
| 3 in (1, 2, 3) | True | Принадлежность |
| for x in (1, 2, 3): print x, | 1 2 3 | Итерация |
Индексация, срезы и матрицы
Индексация и срезы работают как для строк. Дано: L = ('spam', 'Spam', 'SPAM!')
| Выражение | Результат | Описание |
|---|---|---|
| L[2] | 'SPAM!' | Смещение от нуля |
| L[-2] | 'Spam' | Отрицательный: отсчёт с конца |
| L[1:] | ['Spam', 'SPAM!'] | Срез извлекает секции |
Отсутствие обрамляющих разделителей
Любой набор объектов через запятую без идентифицирующих символов (скобок списков, кортежей) по умолчанию является кортежем:
Live Demo#!/usr/bin/python print 'abc', -4.24e93, 18+6.6j, 'xyz' x, y = 1, 2 print "Value of x , y : ", x, y
Результат:
abc -4.24e+93 (18+6.6j) xyz Value of x , y : 1 2
Встроенные функции кортежей
| № | Функция и описание |
|---|---|
| 1 | cmp(tuple1, tuple2) — сравнивает элементы обоих кортежей |
| 2 | len(tuple) — общая длина кортежа |
| 3 | max(tuple) — элемент с максимальным значением |
| 4 | min(tuple) — элемент с минимальным значением |
| 5 | tuple(seq) — преобразует список в кортеж |
Python
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Оператор pass в Python: практическое руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Словари в Python: создание, манипуляции и продвинутые техники
- Итераторы в Python: как они работают и как создать свои
- Замыкания в Python: как вложенные функции захватывают переменные
- Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
- Освоение Python time.sleep(): лучшие практики, многопоточность и реальные примеры
- Освоение кортежей (tuples) в Python: упаковка, распаковка, сравнение, срезы и ключи словаря