Автор | Сообщение |
|
Отправлено: 22.02.22 06:28. Заголовок: Задание 26 (задача № 45)
Здравствуйте! Подскажите, пож., в чем смысл строки who = dict(zip(data, [1 for i in range(N)])). Почему к словарю обращается второе условие, а не к самому списку значений?
|
|
|
Ответов - 4
[только новые]
|
|
|
| Администратор
|
Сообщение: 3339
|
|
Отправлено: 22.02.22 10:40. Заголовок: Главная проблема это..
Главная проблема этой задачи в том, что нам нужно быстро искать среднее арифметическое очередной пары в массиве данных. Быстро искать можно в словаре (не в массиве). Поэтому мы строим фиктивный словарь, в котором важны только ключи (прочитанные данные), а значения (соответствующие ключам) все равны 1, мы их не используем.
|
|
|
|
Отправлено: 22.02.22 12:57. Заголовок: Спасибо! Правильно я..
Спасибо! Правильно я понял, что скорость обработки словаря по ключам выше, чем списка по значениям при равном объеме?
|
|
|
|
| Администратор
|
Сообщение: 3342
|
|
Отправлено: 22.02.22 13:01. Заголовок: dim18 пишет: скорос..
dim18 пишет: цитата: | скорость обработки словаря по ключам выше, чем списка по значениям при равном объеме? |
|
Намного выше. Если значения нет в списке, нужно просмотреть все 100500 элементов списка (сложность O(N)). А в словаре вы получаете ответ сразу, без просмотра (сложность O(1)).
|
|
|
|
Отправлено: 22.02.22 17:15. Заголовок: Понятно, спасибо!..
Понятно, спасибо!
|
|
|
|