Кортежи и словари

Зачем нужны кортежи и словари, если есть список ? Может у них есть какие-то свои особенности ? Можете сказать, пожалуйста?


Ответы (3 шт):

Автор решения: Dmitry

Первое, сравнивать словарь со списком или кортежем не верно. У него свой функционал и применение.

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

list_ = [1,2,3]
list_.remove(1)
print(list_)
# OUT
# [2, 3]

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

Например сортировать

list_ = [3,1,2]
list_.sort()
print(list_)
# OUT
# [1, 2, 3]
→ Ссылка
Автор решения: insolor

Про словарь:

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

Почему не использовать просто список с парами значений, и искать нужные значения просто циклом?

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

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

По поводу кортежей:

  1. Они неизменяемы (иммутабельны)
  2. и хешируемы (если содержат только хешируемые элементы) - значит могут быть ключами в словаре или элементами множеств (в отличие от списков).
  3. и еще небольшой бонус - они занимают немного меньше места в памяти

По теме рекомендую почитать статью на Хабре:
В каких случаях не нужно использовать списки в Python

→ Ссылка
Автор решения: als

Списки в Python - упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться). пример list('список') ['с', 'п', 'и', 'с', 'о', 'к']

Кортеж, по сути - неизменяемый список. Зачем нужны кортежи, если есть списки? Защита от дурака. То есть кортеж защищен от изменений, как намеренных (что плохо), так и случайных (что хорошо). Меньший размер. Возможность использовать кортежи в качестве ключей словаря. пример d = {(1, 1, 1) : 1}

Словари в Python - неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами. пример d = {'dict': 1, 'dictionary': 2}

→ Ссылка