amarao: (Default)
amarao ([personal profile] amarao) wrote2022-09-18 05:59 pm

философское

Почему у питона нет `list.get(index).unwrap_or(some_default_value)`?

Наверное, потому, что это питон. Эх...
juan_gandhi: (Default)

[personal profile] juan_gandhi 2022-09-18 03:20 pm (UTC)(link)

Гвидо сказал, что никаких категорий и монад не знает, и знать не собирается. Ну и.

[personal profile] photo_viewer 2022-09-18 03:53 pm (UTC)(link)
Есть defaultdict - не лист, но вернуть дефолтную величину, когда по индексу ничего нет, можно.
yurikhan: (Default)

[personal profile] yurikhan 2022-09-18 06:15 pm (UTC)(link)

Возможно, потому, что проверить длину списка всегда дёшево, а проверить наличие ключа в словаре — требует посчитать хеш ключа и в положительном случае этот же хеш сразу понадобится снова.

#            ┌──────────────┬─ один доступ к памяти, два сравнения
x = xs[i] if 0 <= i < len(xs) else default_value
#   └───┴── ещё один доступ к памяти

#           ┌────┬─ хеш + обработка коллизий
x = d[k] if k in d else default_value
#   └──┴─ ещё раз хеш + обработка коллизий

#   ┌─────┬─ один раз хеш + обработка коллизий
x = d.get(k, default_value)