---
title: "Списки, кортежи, словари и множества"
seo:
  title: "Списки, кортежи, словари и множества — Python Developer"
  description: "Тема «Списки, кортежи, словари и множества» для собеседования Python Developer. В чем отличие между кортежами и списками? Какие функции предоставляются для работы со списками в Python?"
---

[Все темы Python Developer](/python-developer)

## <strong>В чем отличие между кортежами и списками?</strong> [#q-14bee738d69b817b9db7ce2bc0aa00e9]

Основные различия между кортежами и списками&#58;

### <strong>Кортежи</strong> <code>&#40;tuples&#41;</code>&#58;

- Кортежи - неизменяемые упорядоченные коллекции объектов.

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

- Создаются с использованием круглых скобок&#58; <code>&#40;&#41;</code>.

- Используются, когда необходима коллекция, которая не должна изменяться.

### <strong>Списки</strong> <code>&#40;lists&#41;</code>&#58;

- Списки - изменяемые упорядоченные коллекции объектов.

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

- Создаются с использованием квадратных скобок&#58; <code>&#91;&#93;</code>.

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

:::note[Ссылки для изучения]

1. [Списки и кортежи в Python](https://letpy.com/python-guide/lists-and-tuples/)
   :::

---

## <strong>Какие функции предоставляются для работы со списками в Python?</strong> [#q-14bee738d69b813e853bf95e7b94ce9a]

Выделяют основные функции для работы со списками&#58;

1. <code>append&#40;&#41;</code>&#58; Добавляет элемент в конец списка.

1. <code>extend&#40;&#41;</code>&#58; Расширяет список, добавляя элементы из
   другого списка.

1. <code>insert&#40;&#41;</code>&#58; Вставляет элемент на указанную позицию.

1. <code>remove&#40;&#41;</code>&#58; Удаляет первое вхождение элемента с
   указанным значением.

1. <code>pop&#40;&#41;</code>&#58; Удаляет элемент с указанным индексом и
   возвращает его значение.

1. <code>clear&#40;&#41;</code>&#58; Удаляет все элементы из списка.

1. <code>index&#40;&#41;</code>&#58; Возвращает индекс первого вхождения
   элемента с указанным значением.

1. <code>count&#40;&#41;</code>&#58; Возвращает количество вхождений элемента с
   указанным значением.

1. <code>sort&#40;&#41;</code>&#58; Сортирует элементы списка.

1. <code>reverse&#40;&#41;</code>&#58; Изменяет порядок элементов на обратный.

1. <code>copy&#40;&#41;</code>&#58; Создает копию списка.

:::note[Ссылки для изучения]

1. [Списки в Python](https://pythonworld.ru/tipy-dannyx-v-python/spiski-list-funkcii-i-metody-spiskov.html)
   :::

---

## <strong>Какая операция выполняется быстрее&#58; проверка наличия элемента в списке или в множестве?</strong> [#q-14bee738d69b81f385d8e0b7b8f36c41]

В множестве проверка наличия элемента выполняется быстрее, чем в списке. В множестве элементы хранятся в хэш-таблице, что обеспечивает <code>константное время</code> доступа к элементам в среднем случае. В списке же для проверки наличия элемента нужно пройти по всему списку, что требует времени пропорционально размеру списка, то есть <code>O&#40;n&#41;</code>, где n - количество элементов в списке.

:::note[Ссылки для изучения]

1. [Списки, словари и множества в Python](https://informatics.msk.ru/mod/book/tool/print/index.php?id=56969)
   :::

---

## <strong>Какие объекты могут выступать в качестве ключей в словаре и почему именно они выбираются в качестве ключей?</strong> [#q-14bee738d69b813ba66bc13bc847f318]

Ключ словаря должен быть хешируемым&#58; его хеш не меняется за время жизни, а равные ключи имеют равные хеши. Числа и строки подходят; кортеж подходит, только если хешируемы все его элементы. Неизменяемость сама по себе не гарантирует хешируемость. Экземпляры пользовательских классов по умолчанию хешируемы по идентичности.

:::note[Ссылки для изучения]

1. [Словари в Python](https://pythontutor.ru/lessons/dicts/)
   :::

---

## <strong>Как происходит в памяти компьютера инициализация списков, кортежей, что занимает меньше памяти?</strong> [#q-14bee738d69b8168b89cc0cce916d7e8]

При инициализации списков и кортежей в памяти компьютера происходит выделение памяти для хранения элементов данных. Вот основные различия между списками и кортежами в плане памяти&#58;

{/* prettier-ignore */}
1. <strong>Списки</strong> <code>&#40;list&#41;</code>&#58;

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

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

    - Это делает списки менее эффективными с точки зрения использования памяти, особенно для больших списков.

1. <strong>Кортежи</strong> <code>&#40;tuple&#41;</code>&#58;

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

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

    - Это делает кортежи более компактными и эффективными с точки зрения использования памяти, особенно если требуется хранить данные, которые не будут изменяться.

:::note[Ссылки для изучения]

1. [Списки и кортежи в Python](https://letpy.com/python-guide/lists-and-tuples/)
   :::

---

## <strong>Где быстрее искать значение по ключу - в словаре или dicts в Python?</strong> [#q-14bee738d69b81809b2dfcf0eea6b4d1]

Словарь в Python и dict обозначают один встроенный тип. Отдельного встроенного типа dicts нет. Поиск по ключу в dict в среднем занимает O(1), а в худшем случае O(n). Если в вопросе подразумевается сторонняя обёртка, сначала нужно уточнить её название и реализацию.

:::note[Ссылки для изучения]

1. [Списки и кортежи в Python](https://letpy.com/python-guide/lists-and-tuples/)
   :::
