**Программист — применение хешируемых объектов для хранения данных с быстрым и удобным поиском **
Решение: создать словарь dict()
phone_book = {}
phone_book["emergency"] = 911
print phone_book["emergency"]
#911
Другие способы решить проблему:
- создать список list()
Значимые преимущества/недостатки:
- (+) мгновенный поиск по ключу
- (+) исключение появления дубликатов
- (-) вероятность появления коллизий
Причины преимуществ/недостатков:
- данные записываются в формате ключ:значение
- не возможно полностью исключить возникновение коллизий
Программист — требуется надежное хранение пароля
Решение: преобразовать пароль с помощью односторонней математической функции (хэш-функции)
Другие способы решить проблему:
- придумать свою систему шифрования
Значимые преимущества/недостатки:
- (+) зашифрованный пароль невозможно расшифровать «обратно»
- (+) недопустимость появления коллизий
- (-) если пароль простой, его можно найти в существующих базах данных самых распростаненных паролей
Причины преимуществ/недостатков:
- суть хеширования — в детерминированном одностороннем (необратимом) преобразовании набора данных произвольного размера в массив фиксированной длины
**Программист — требуется отфильтровать элементы в коллекции при её переборе **
Решение: использовать итерацию по элементам коллекции
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)]
Другие способы решить проблему:
- использование встроенных функций и методов
Значимые преимущества/недостатки:
- (+) свойство итерируемости позволяет применять фильтры и операции отдельно к каждому элементу объекта
- (-) при необходимости применения сложных фильтров элементов объекта может понадобится написание дополнительного кода
Причины преимуществ/недостатков:
- есть возможность применять любые фильтры в процессе итерации по элементам объекта
- для возможности применения фильтров нужно, чтобы объект был итерируемым