Кортеж (tuple) в Python — это последовательность неизменяемых объектов. Кортежи очень схожи со списками, с той разницей — что элементы кортежа не могут быть изменены и используют обычные скобки, вместо квадратных, как в списках.
Кортеж создаётся простым присваиванием элементов, разделённых запятыми. Так же — их можно указывать в скобках. Например:
>>> tup1 =('physics','chemistry',1997,2000);
>>> tup2 =(1,2,3,4,5);
>>> tup3 ="a","b","c","d";
Пустой кортеж создаётся указанием пустых скобок:
>>> tup1 = ();
Что бы создать кортеж, содержащий только один элемент — тоже необходимо добавлять запятую:
>>> tup1 =(50,); >>> print tup1[0] 50
Содержание
Получение данных из кортежа
Что бы получить какой-то элемент из кортежа — используйте квадратные скобки с указанием индекса или индексов:
>>> tup1 = ('physics', 'chemistry', 1997, 2000);
>>> tup2 = (1, 2, 3, 4, 5, 6, 7 );
>>>
>>> print "tup1[0]: ", tup1[0]
tup1[0]: physics
>>> print "tup2[1:5]: ", tup2[1:5]
tup2[1:5]: (2, 3, 4, 5)
Обновление кортежей
Кортежи являются неизменяемыми последовательностями в 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.560000000000002, 'abc', 'xyz')
Удаление элементов кортежа
Удалить отдельный элемент из кортежа нельзя:
>>> del tup3[0] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object doesn't support item deletion
Но — ничего не мешает создать новый, без ненужного элемента:
>>> tup1 = (1, 2, 3) >>> del tup1[0] >>> tup2 = tup1[:2] >>> print tup2 (1, 2)
Что бы удалить кортеж полностью — используется тот же оператор del:
>>> tup = ('physics', 'chemistry', 1997, 2000);
>>>
>>> print tup;
('physics', 'chemistry', 1997, 2000)
>>> del tup;
>>> print "After deleting tup : "
After deleting tup :
>>> print tup;
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameE
Базовые операторы кортежей
Кортежи работают с операторами + и * так же, как и строки или списки — они используются для конкатенации и повторения, за исключением того — что в результате получится новый кортеж, а не список или строка.
Фактически, кортежи вообще поддерживают те же операции с последовательностями, как и строки:
| Python Expression | Results | Description |
|---|---|---|
| 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!')
| Python Expression | Results | Description |
|---|---|---|
| L[2] | ‘SPAM!’ | смещение всегда начинается с нуля |
| L[-2] | ‘Spam’ | отрицательный индекс: отсчёт с правой стороны списка |
| L[1:] | [‘Spam’, ‘SPAM!’] | срез получает «участки» кортежа |
Нет закрывающих разделителей
Любой набор различных объектов разделённых запятыми, записанный без использования идентичных символов, т.е. квадратные скобки для списков или простые скобки для кортежей, по умолчанию будет считаться кортежами:
>>> print 'abc', -4.24e93, 18+6.6j, 'xyz'; abc -4.24e+93 (18+6.6j) xyz >>> x, y = 1, 2; >>> print "Value of x , y : ", x,y; Value of x , y : 1 2
Встроенные методы кортежей
| SN | Function with Description |
|---|---|
| 1 | cmp(tuple1, tuple2) сравнение элементов двух кортежей; |
| 2 | len(tuple) количество элементов в кортеже; |
| 3 | max(tuple) получить наибольший элемент кортежа; |
| 4 | min(tuple) получить наименьший элемент кортежа; |
| 5 | tuple(seq) превратить список в кортеж; |
37 175 views