Освой Python играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Python: Tuple (Кортежи)

Кроме изменяемых списков есть особый вид неизменяемых списков - tuple (кортежи). Кортежи обеспечивают определённую защиту от дурака - намеренных или случайных изменений, а также занимают меньше места в памяти.

Если у обычных списков используются квадратные скобки, то у кортежей круглые (они не обязательны). Сравним, сколько занимают места списки и кортежи.


tuple = (1, 2, 3, 4, 5)
list = [1, 2, 3, 4, 5]
print(tuple.__sizeof__()) # 64
print(list.__sizeof__())  # 80

Пустой кортеж можно создать через пустые круглые скобки.


emptyTuple = ()
print(str(type(emptyTuple))) # <class 'tuple'>

Кортеж из одного элемента. Желательно поставить запятую в конце, иначе получим строку вместо кортежа.


oneTuple = ('t', )

Узнать длину кортежа можно через len().


myTuple = (1, 2, 3, 4, 5)
print(len(myTuple)) # 5

Доступ к отдельному элементу осуществляется по индексу.


myTuple = (1, 2, 3, 4, 5)
print(str(myTuple))
print(myTuple[2]) # 3

Кортежи можно использовать в словарях в качестве ключей.


myDict = {(1, 1): "Bars"}

print(myDict.get((1, 1)))

Можно проводить любые операции, которые не меняют список - методы index(), count().

Можно в один кортеж добавить другой. При этом кортеж внутри кортежа не теряет своей индивидуальности.

Допустим у нас есть старый кошкин дом. Он стал тесным и мы переселили котов в новый дом с другими жильцами.


old_cat_house = ("Барсик", "Мурзик", "Васька")
new_cat_house = ("Рыжик", "Пушок", old_cat_house)
# длина нового дома - два жильца и плюс один кортеж (хотя в нём три кота)
print(len(new_cat_house)) # 3

# выводим всех котов нового дома
print(new_cat_house) #('Рыжик', 'Пушок', ('Барсик', 'Мурзик', 'Васька'))

# выводим третий элемент кортежа, который сам является кортежем
print(new_cat_house[2]) # ('Барсик', 'Мурзик', 'Васька')

# узнать общую длину нового кортежа с элементами второго кортежа 
print(len(new_cat_house) - 1 + len(new_cat_house[2]))
Реклама