Для чего нужны кортежи в python
Перейти к содержимому

Для чего нужны кортежи в python

  • автор:

Кортежи (tuple)

Python 3 логотип

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

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

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

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

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

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

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

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

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

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

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

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

Для вставки кода на Python в комментарий заключайте его в теги

  • Модуль csv - чтение и запись CSV файлов
  • Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
  • Онлайн-обучение Python: сравнение популярных программ
  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов
  • Сделай свой вклад в развитие сайта!
  • Самоучитель Python
  • Карта сайта
  • Отзывы на книги по Python
  • Реклама на сайте

Кортежи¶

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

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

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

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

>>> 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 

Зачем нужны кортежи?

Начал изучать python у тут сразу возник вопрос. Зачем нужны кортежи, когда есть словари у которых побольше функционала? И где они используются?

  • Вопрос задан более трёх лет назад
  • 4017 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 4

denshi

Кортежи неизменяемы и от них можно найти хеш, если они, конечно, сами не содержат изменяемых типов.
Из-за этого кортежи более легковесны, а возможность найти хеш позволяет использовать кортежи в виде ключей для словарей.

Например, можно хранить содержимое некоторых координат массива
d =

Теперь легко обойти все содержимое:

for x, y in d: print(x, y, d[x, y])

Ответ написан более трёх лет назад
Комментировать
Нравится 7 Комментировать

lightarhont

Mikhail @lightarhont
python/php developer

Кортежи это аналог списка, а не словаря. В основном они дают скорость работы в обмен на меньшую гибкость и больше ничего. Если вы используете кортежи там где им быть уместно значит вы молодец!

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
кортеж защищен от изменений
Ответ написан более трёх лет назад
Нравится 2 3 комментария
Sushkov @Sushkov Автор вопроса
Это я заметил. В этот их превосходство над списками?
Sushkov: Да, плюс еще меньше "весит" по памяти

sim3x

angru

В дополнение ко всему вышеперечисленному, с архитектурной точки зрения, логичнее и безопаснее представлять наборы данных как список кортежей, они и быстрее, как уже сказали, и их нельзя случайно изменить и что-нибудь сломать. А еще есть такая штука, как namedtuple, это вообще киллер фича, отличная альтернатива классам, т.е., когда не нужна вся сила классов, лучше использовать именованные кортежи.

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python
  • +1 ещё

Как сделать форму с добавлением нескольких элементов на django?

  • 1 подписчик
  • 3 часа назад
  • 23 просмотра

Зачем нужен кортеж в Python и как с ним работать

Помимо списков в Python есть возможность работать с кортежами . Кортеж — это структура данных, похожая на список. Подобно спискам, кортежи могут хранить некоторый упорядоченный набор элементов.

Курс Микросервисная архитектура.

програма, яка допоможе опанувати головні принципи розробки мікросервісної архітектури, щоби ви могли проєктувати незалежні сервіси, а потім інтегрувати їх в одну систему. Практики буде багато.

Создание кортежа

Кортеж создается как список, только с круглыми скобками:

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

a = 12, 1, 33 print (a) (12, 1, 33)

В том случае, когда кортеж состоит из одного элемента, обязательно поставьте запятую:

Курс Frontend.
Онлайн курс з працевлаштуванням, ставай суперніндзя, який може з нуля створити сайт.
a=1, type(a)

Существует еще один способ описания кортежа — при помощи функции tuple :

b= tuple() #Присвоение переменной b типа кортеж

Доступ к элементам кортежа

Доступ к элементам кортежа осуществляется так же, как и доступ к элементам списка — с помощью индекса. Чтобы вывести, скажем, второй элемент кортежа, следует обратиться к элементу с индексом 1:

a = (25, 26, 27) # Создание кортежа print(a[1]) 26

Чем кортеж отличается от списка?

Кортеж является неизменяемым списком, но с ним можно проводить не все операции, которые возможны со списком. Предположим, мы хотим заменить определенный элемент из списка:

a = [25, 26, 27] # Описание списка a [1] = 28 # Элемент списка с индексом 1 изменяется на 28 print (a) # Вывод результата на экран 25, 28, 27

В случае с кортежем такую операцию выполнить невозможно. Напомним, что в отличии от списков, кортежи являются неизменяемой структурой.

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

Еще одно достоинство кортежей — они занимают в памяти меньше места, чем списки. В этом нетрудно убедиться, используя метод __sizeof__ , который возвращает размер объекта в байтах:

a = [25, 26, 27] #Описание списка tpl = (25, 26, 27) # Описание кортежа print(tpl.__sizeof__()) #Получение размера в байтах для кортежа tpl 48 print(a.__sizeof__()) #Получение размера в байтах для списка a 104

Как видно, список a занимает 104 байта против 48 байт, выделяемых для кортежа. Из этого можно сделать вывод — производительность операций с кортежами будет выше, чем при работе со списками и, соответственно, меньше потратится времени.

Вывод элементов кортежа

Из общего набора элементов кортежа можно выводить диапазон значений:

Курс Frontend.
Онлайн курс з працевлаштуванням, ставай суперніндзя, який може з нуля створити сайт.

tpl = (25, 26, 27, 40, 50) print(tpl[0:2]) (25, 26)

Элементы кортежа нельзя удалить — удалить можно только саму переменную, которой обозначен кортеж.

tpl = (25, 26, 27, 40, 50) # Описание кортежа del tpl # Удаление переменной tpl

Обратите внимание — когда переменная идентифицируется как кортеж и содержит текст, при выводе ее значения мы получаем не цельный текст, а отдельные символы — элементы неизменяемого списка:

f = tuple ("абракадабра") print (f) ('а', 'б', 'р', 'а', 'к', 'а', 'д', 'а', 'б', 'р', 'а')

Поиск элемента в кортеже

Рассмотрим простую, но часто востребованную задачу — поиск элемента в кортеже. Предположим, у нас есть некий кортеж данных, скажем, список имен. Нам необходимо проверить, есть ли в нем имя Елена:

allusers = ("Андрей", "Василиса", "Константин", "Анатолий", "Леонид", "София", "Елена") name = "Елена" if name in allusers: print("Имя присутствует в списке") else: print("Имя отсутствует в списке") Имя присутствует в списке

Определение количества повторений в кортеже

С кортежем можно выполнять те же действия, что и со списком, за исключением операций, которые меняют содержимое. Например, можно подсчитать число повторений определенного элемента в кортеже:

a = ( "Инна", "Владимир", "Арина", "Инна", "Сергей") print (a.count ("Инна")) 2

Заключение

Кортежи выгодно использовать в случаях, когда нужно быть уверенным в целостности данных. Кортеж не подвергается изменениям. Он аналогичен списку, но занимает меньше памяти, а потому, запомните: если есть возможность использовать кортеж вместо списка, лучше использовать кортеж.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *