Python
Вопрос по теории Python(и любой другой язык)
Объясните в чем разница словаря и списка, точнее разницу я понимаю, но какой смысл и где использовать словарь вместо списка не понимаю
То, что в Python называют "списком" (list) в нормальных языках программирования называется "массив" (линейный массив, array). Это набор ячеек, индексируемый непрерывным диапазоном значений дискретного типа. Набор упорядочен по значениям индекса. В Python индексы всегда целочисленны и всегда начинаются с 0.
То, что в Python называют "словарём" (dict), обозначается стандартным русским термином "ассоциативный массив" (в разных языках: хэш, hash, map). Это набор ячеек, индексируемых произвольными значениями (никаких непрерывных диапазонов) допустимых типов. В Python допустимыми типами индекса являются целые числа, строки, логические значения, кортежи (tuple), константные множества (frozenset). В общем случае ассоциативный массив не упорядочен - ключи при обходе массива идут в произвольном порядке (вроде бы, в последних версиях Python ключи упорядочены в порядке их добавления в массив).
Доступ к элементу ассоциативного массива обычно многократно медленнее, чем к элементу линейного массива. Например, в языке Go скорость различается примерно на порядок. Но в Python разница в скорости может быть и меньше - за счёт того, что и доступ к элементу массива в нём не быстрый.
P.S. Автор Python сознательно положил болт на общепринятую программистскую терминологию, что создаёт проблемы. В нормальном программировании тот же "список" обозначает совершенно иной тип данных.
То, что в Python называют "словарём" (dict), обозначается стандартным русским термином "ассоциативный массив" (в разных языках: хэш, hash, map). Это набор ячеек, индексируемых произвольными значениями (никаких непрерывных диапазонов) допустимых типов. В Python допустимыми типами индекса являются целые числа, строки, логические значения, кортежи (tuple), константные множества (frozenset). В общем случае ассоциативный массив не упорядочен - ключи при обходе массива идут в произвольном порядке (вроде бы, в последних версиях Python ключи упорядочены в порядке их добавления в массив).
Доступ к элементу ассоциативного массива обычно многократно медленнее, чем к элементу линейного массива. Например, в языке Go скорость различается примерно на порядок. Но в Python разница в скорости может быть и меньше - за счёт того, что и доступ к элементу массива в нём не быстрый.
P.S. Автор Python сознательно положил болт на общепринятую программистскую терминологию, что создаёт проблемы. В нормальном программировании тот же "список" обозначает совершенно иной тип данных.
Александр Сальников
А на Python, по вашему, это ненормальное программирование? Просто другое.
Поиск значения по заранее заданному ключу в Питоне практически мгновенный, намного быстрее чем поиск в обычном списке. Но в программировании не бывает такого что "одно однозначно лучше, другое однозначно хуже". Всё зависит от конретной ситуации. И используется то что больше подходит в каких-то определенных условиях
Там, где индексов тебе недостаточно.
Например если ты хочешь получать элементы по строке вместо индексов.
Где можешь, лучше ограничивайся списками. Словари может и кажутся быстрыми, но на деле точно медленнее будут
Например если ты хочешь получать элементы по строке вместо индексов.
Где можешь, лучше ограничивайся списками. Словари может и кажутся быстрыми, но на деле точно медленнее будут
Похожие вопросы
- Программирование на языке python, помогите советом. Вопрос от чайника.
- Можно ли такое написать на компьютерном языке PYTHON
- Подскажите ресурс\книги с примерами по высшей математике и их решений на языке Python
- Какой язык из этих 2 быстрее будет работать на Linux? Python или C#?
- Почему Python считается легким языком программирования ?
- Что такое переменные и типы данных в языке python
- Что такое типизация в языках программирования или как типизация реализована в python??
- Очень понравился язык Python, нужны ли на рынке труда узкие специалисты со знанием только одного языка?
- Решите с помощью языка программирования Python!
- Нужна помощь.(Язык программирования Python)