Кортежи (tuple)

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

  1. Защита от дурака. То есть кортеж защищен от изменений, как намеренных (что плохо), так и случайных (что хорошо).

  2. Меньший размер. Дабы не быть голословным:

    >>>
    >>> a = (1, 2, 3, 4, 5, 6)
    >>> b = [1, 2, 3, 4, 5, 6]
    >>> a.__sizeof__()
    36
    >>> b.__sizeof__()
    44
  3. Возможность использовать кортежи в качестве ключей словаря:

    >>>
    >>> 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
Материал взят с сайта pythonworld.ru
Категория: Python | Добавил: ghost_mod (08.04.2016)
Просмотров: 465 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: