Что делает наборы быстрее, чем списки?

Вики-сайт python говорит: "Тестирование членства с наборами и словарями много ж звездочка, O (1), чем поисковые последовательности, O (n). При тестировании «a in b», b должен быть набором или словарем, а не списком или кортежем ».

Я использовал наборы вместо списков, когда скорость важна в моем коде, но в последнее время я интересно, почему наборы намного быстрее, чем списки. Может ли кто-нибудь объяснить или указать мне на источник, который объяснил бы, что именно происходит за кулисами в python, чтобы сделать наборы быстрее?

37
задан codeforester 16 July 2019 в 06:01
поделиться

1 ответ

В основном, Зависит от операции, Вы делаете †¦

*For, добавляющий элемент - тогда, набор doesn’t должен переместить любые данные и все, что это должно сделать, вычисляют значение хэш-функции и добавляют его к таблице. Для вставки списка тогда потенциально существуют данные, которые будут перемещены.

*For, удаляя элемент - весь, который должен сделать набор, удаляют запись хеша из хэш-таблицы, для списка, это потенциально должно переместить данные (в среднем 1/2 данных.

*For поиск (т.е. в операторе) - набор просто должен вычислить значение хэш-функции элемента данных, найти, что значение хэш-функции в хэш-таблице, и если это там - тогда бинго. Для списка поиск должен искать каждый объект в свою очередь - в среднем 1/2 всех условий в списке. Даже в течение многих 1000-х объектов набор будет намного более быстрым для поиска.

0
ответ дан 27 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: