MyTetra Share
Делитесь знаниями!
Кортежи (tuple)
Время создания: 29.07.2019 23:51
Раздел: !Закладки - Python - Модули
Запись: xintrea/mytetra_db_adgaver_new/master/base/1533666715j2xa25p02a/text.html на raw.githubusercontent.com

Кортежи (tuple)

Сегодня я расскажу о таком типе данных, как кортежи (tuple) и о том, где они применяются.

Кортеж, по сути - неизменяемый список.

Зачем нужны кортежи, если есть списки?

  • Защита от дурака. То есть кортеж защищен от изменений, как намеренных (что плохо), так и случайных (что хорошо).
  • Меньший размер. Дабы не быть голословным:

>>>

>>> a = (1, 2, 3, 4, 5, 6)

>>> b = [1, 2, 3, 4, 5, 6]

>>> a.__sizeof__()

36

>>> b.__sizeof__()

44


  • Возможность использовать кортежи в качестве ключей словаря:

>>>

>>> d = {(1, 1, 1) : 1}

>>> d

{(1, 1, 1): 1}

>>> d = {[1, 1, 1] : 1}

Traceback (most recent call last):

File "", line 1, in

d = {[1, 1, 1] : 1}

TypeError: unhashable type: 'list'


Как работать с кортежами?

С преимуществами кортежей разобрались, теперь встает вопрос - а как с ними работать. Примерно так же, как и со списками.

Создаем пустой кортеж:

>>>

>>> a = tuple() # С помощью встроенной функции tuple()

>>> a

()

>>> a = () # С помощью литерала кортежа

>>> a

()

>>>


Создаем кортеж из одного элемента:

>>>

>>> a = ('s')

>>> a

's'


Стоп. Получилась строка. Но как же так? Мы же кортеж хотели! Как же нам кортеж получить?

>>>

>>> a = ('s', )

>>> a

('s',)


Ура! Заработало! Все дело - в запятой. Сами по себе скобки ничего не значат, точнее, значат то, что внутри них находится одна инструкция, которая может быть отделена пробелами, переносом строк и прочим мусором. Кстати, кортеж можно создать и так:

>>>

>>> a = 's',

>>> a

('s',)


Но все же не увлекайтесь, и ставьте скобки, тем более, что бывают случаи, когда скобки необходимы.

Ну и создать кортеж из итерируемого объекта можно с помощью все той же пресловутой функции tuple()

>>>

>>> a = tuple('hello, world!')

>>> a

('h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!')


Операции с кортежами

Все операции над списками, не изменяющие список (сложение, умножение на число, методы index() и count() и некоторые другие операции). Можно также по-разному менять элементы местами и так далее.

Например, гордость программистов на python - поменять местами значения двух переменных:

a, b = b, a


 
MyTetra Share v.0.59
Яндекс индекс цитирования