Skip to content

Instantly share code, notes, and snippets.

@0viktory0
Last active September 12, 2023 13:37
Show Gist options
  • Save 0viktory0/1e861011d46a72cfadb249e4282aede6 to your computer and use it in GitHub Desktop.
Save 0viktory0/1e861011d46a72cfadb249e4282aede6 to your computer and use it in GitHub Desktop.

Свойства объектов

Ситуация № 1

**Программист — применение хешируемых объектов для хранения данных с быстрым и удобным поиском **

Решение: создать словарь dict()

phone_book = {}
phone_book["emergency"] = 911

print phone_book["emergency"]
#911

Другие способы решить проблему:

  • создать список list()

Значимые преимущества/недостатки:

  • (+) мгновенный поиск по ключу
  • (+) исключение появления дубликатов
  • (-) вероятность появления коллизий

Причины преимуществ/недостатков:

  • данные записываются в формате ключ:значение
  • не возможно полностью исключить возникновение коллизий

Ситуация № 2

Программист — требуется надежное хранение пароля

Решение: преобразовать пароль с помощью односторонней математической функции (хэш-функции)

Другие способы решить проблему:

  • придумать свою систему шифрования

Значимые преимущества/недостатки:

  • (+) зашифрованный пароль невозможно расшифровать «обратно»
  • (+) недопустимость появления коллизий
  • (-) если пароль простой, его можно найти в существующих базах данных самых распростаненных паролей

Причины преимуществ/недостатков:

  • суть хеширования — в детерминированном одностороннем (необратимом) преобразовании набора данных произвольного размера в массив фиксированной длины

Свойство итерируемости объекта

Ситуация № 1

**Программист — требуется отфильтровать элементы в коллекции при её переборе **

Решение: использовать итерацию по элементам коллекции

def is_even(num):
    return num % 2 == 0

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

filtered_numbers = [n for n in numbers if is_even(n)]

Другие способы решить проблему:

  • использование встроенных функций и методов

Значимые преимущества/недостатки:

  • (+) свойство итерируемости позволяет применять фильтры и операции отдельно к каждому элементу объекта
  • (-) при необходимости применения сложных фильтров элементов объекта может понадобится написание дополнительного кода

Причины преимуществ/недостатков:

  • есть возможность применять любые фильтры в процессе итерации по элементам объекта
  • для возможности применения фильтров нужно, чтобы объект был итерируемым
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment