Python — кортежи
Предыдущая страницаСледующая страница
Кортеж — это набор объектов, которые упорядочены и неизменны. Кортежи — это последовательности, как и списки. Различия между кортежами и списками заключаются в том, что кортежи нельзя изменить, в отличие от списков, и в кортежах используются круглые скобки, тогда как в списках используются квадратные скобки.
Создать кортеж так же просто, как указать разные значения, разделенные запятыми. При желании вы также можете поместить эти значения, разделенные запятыми, в круглые скобки. Например —
tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d";
Пустой кортеж записывается в виде двух ничего не содержащих круглых скобок —
tup1 = ();
Чтобы написать кортеж, содержащий одно значение, вы должны поставить запятую, даже если есть только одно значение —
tup1 = (50,);
Как и индексы строк, индексы кортежей начинаются с 0, и их можно нарезать, объединять и т. д.
Доступ к значениям в кортежах
Чтобы получить доступ к значениям в кортеже, используйте квадратные скобки для нарезки вместе с индексом или индексами, чтобы получить значение, доступное по этому индексу. Например —
Живая демонстрация#!/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]
Обновление кортежей
Кортежи неизменяемы, что означает, что вы не можете обновлять или изменять значения элементов кортежа. Вы можете использовать части существующих кортежей для создания новых кортежей, как показано в следующем примере —
Живая демонстрация#!/usr/bin/python tup1 = (12, 34.56); tup2 = ('abc', 'xyz'); # Following action is not valid for tuples # tup1[0] = 100; # So let's create a new tuple as follows tup3 = tup1 + tup2; print tup3;
Когда приведенный выше код выполняется, он дает следующий результат —
(12, 34.56, 'abc', 'xyz')
Удалить элементы кортежа
Удаление отдельных элементов кортежа невозможно. Конечно, нет ничего плохого в том, чтобы собрать еще один кортеж с отброшенными нежелательными элементами.
Чтобы явно удалить весь кортеж, просто используйте del утверждение. Например —
Живая демонстрация#!/usr/bin/python tup = ('physics', 'chemistry', 1997, 2000); print tup; del tup; print "After deleting tup : "; print tup;
Это приводит к следующему результату. Обратите внимание на поднятое исключение, потому что после del tup кортеж больше не существует -
('physics', 'chemistry', 1997, 2000) After deleting tup : Traceback (most recent call last): File "test.py", line 9, in <module> 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) | Конкатенация |
('Привет!',) * 4 | ('Привет!', 'Привет!', 'Привет!', 'Привет!') | Повторение |
3 дюйма (1, 2, 3) | Верно | Членство |
для x в (1, 2, 3):напечатайте x, | <тд>1 2 3тд>Итерация |
Индексирование, срезы и матрицы
Поскольку кортежи представляют собой последовательности, индексирование и нарезка для кортежей работают так же, как и для строк. Предполагая следующий ввод —
L = ('spam', 'Spam', 'SPAM!')
Выражение Python | Результаты | Описание |
---|---|---|
Л[2] | 'СПАМ!' | Смещения начинаются с нуля |
L[-2] | 'Спам' | Отрицательный:считать справа |
Л[1:] | ['Спам', 'СПАМ!'] | Нарезка разделов выборки |
Без закрывающих разделителей
Любой набор из нескольких объектов, разделенных запятыми, записанный без идентифицирующих символов, т. е. скобок для списков, скобок для кортежей и т. д., по умолчанию является кортежами, как показано в этих коротких примерах —
Живая демонстрация#!/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
Встроенные функции кортежа
Python включает следующие функции кортежа —
Серийный номер | Функция с описанием |
---|---|
1 | cmp(кортеж1, кортеж2) Сравнивает элементы обоих кортежей. |
2 | len(кортеж) Выдает общую длину кортежа. |
3 | max(кортеж) Возвращает элемент из кортежа с максимальным значением. |
4 | мин(кортеж) Возвращает элемент из кортежа с минимальным значением. |
5 | кортеж (последовательность) Преобразует список в кортеж. |
Python