Рубрики
Без рубрики

Вы должны использовать наборы Python

Этот пост содержит ссылки на большую нотацию1, если вы не знакомы с ним (или не помните … Теги с Python, учебником, начинающими, структурами данных.

Этот пост содержит ссылки на большую обозначение 1 , если вы не знакомы с ним (или не помните, как это работает) Теперь самое время для повышения квалификации.

В стандартной библиотеке Python существует тонна данных структур данных, большинство из которых идут недостаточно. Сегодня я хотел бы сосредоточиться на одном типе, в частности, вы, вероятно, должны использовать больше, чем вы: Установить Отказ Вы можете быть уже осведомлены о общей концепции множеств в информатике 2 набор Python 3 это именно это.

Что это?

Для тех из вас, кто уже не знает, а Установить является неупорядоченной коллекцией одновременных объектов, которые не могут содержать никаких дубликатов. Hashable Cart является ключом здесь, очень похоже на клавиши в Дикт 4 (A.k.a. Ассоциативный массив 5 ), каждая запись хешируется, чтобы создать индекс в основной структуре данных. Вы можете думать о Установить очень похоже на Дикт без каких-либо ценностей.

Когда это использовать?

А Установить чрезвычайно полезная альтернатива более популярным Список В нескольких сценариях:

  1. Ищете членство (например, в Оператор). Время поиска для Установить это O (1), тогда как для списка это O (n) 6 .
  2. Если вы будете Удаление Члены, та же история как в Здесь относится к сложности.
  3. Если вам нужно сравнить, контрастные или комбинировать коллекции – Установить Имеет операторы для всех этого.
  4. Если вы не можете иметь никаких дубликатовных значений в коллекции.

Когда не использовать это?

  1. Если вам нужно иметь более одной копии того же значения в коллекции.
  2. Если порядок объектов имеет значение
  3. Если объекты в вашей коллекции не являются одновременно Hashable 7.

Как это использовать?

set_with_values = {'a', 'b', 'c'}
other_set = set()  # Note {} would be a dict

assert 'a' in set_with_values  # Super speedy operation

other_set.add('c')

assert other_set < set_with_values  # This means other_set is a subset of set_with_values

assert set_with_values > other_set  # Super set

other_set.add('d')

# Set defines a bunch of useful operators
assert set_with_values | other_set == {'a', 'b', 'c', 'd'}
assert set_with_values & other_set == {'c'}
assert set_with_values - other_set == {'a', 'b'}
assert set_with_values ^ other_set == {'a', 'b', 'd'}

set_with_values |= other_set  # You can perform updates with all of those operators
assert set_with_values == {'a', 'b', 'c', 'd'}  # Note only 1 copy of 'c'

set_with_values.remove('d')  # Again, super fast compared to lists

Заключение

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

  1. https://en.wikipedia.org/wiki/big_o_notation

  2. https://en.wikipedia.org/wiki/Set_(abstract_data_type)

  3. https://docs.cython.org/3.7/library/stdtypes.html#set-types-set-frozenset

  4. https://docs.cython.org/3.7/library/stdtypes.html#mapping-types-dict

  5. https://en.wikipedia.org/wiki/associative_Array

  6. https://www.ics.uci.edu/~pattis/ics-33/lectures/CompLexityPython.txt

  7. https://docs.cython.org/3/glossary.html#thterm-hatable

Оригинал: “https://dev.to/dbanty/you-should-use-python-sets-1d14”