Set () быстрее, чем list (), python? - PullRequest
3 голосов
/ 08 марта 2020

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

setA = set(input().split())

быстрее, чем использование приведенного ниже? Если это так (я действительно испытал это таким образом), почему?

listA = list(input().split())

Пожалуйста, не сосредотачивайтесь на том факте, что при чтении ввода не происходит преобразования в int .

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

edit: Если это может быть связано, то соответствующий код,

arr = input().split()

for ele in arr:

    if ele in setA:
        happiness += 1
    elif ele in setB:
        happiness += -1
    else:
        pass

Где arr - это разделенная пробелами строка целых чисел, без единственности на этот раз.

1 Ответ

3 голосов
/ 08 марта 2020

Класс множеств Python представляет математическое понятие множества, а именно набора элементов, без дубликатов и без присущего этим элементам порядка. Основное преимущество использования набора по сравнению со списком состоит в том, что он имеет высоко оптимизированный метод для проверки того, содержится ли указанный набор c в наборе. Это основано на структуре данных, известной как таблица ha sh

Однако есть два важных ограничения из-за алгоритмов c. Во-первых, набор не поддерживает элементы в каком-либо определенном порядке. Во-вторых, в набор Python могут быть добавлены только экземпляры неизменяемых типов. Следовательно, такие объекты, как целые числа, числа с плавающей точкой и символьные строки, могут быть элементами набора. Можно поддерживать набор кортежей, но не набор списков или набор наборов, поскольку списки и наборы являются изменяемыми.

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