amarao: (Default)
[personal profile] amarao
Почему у питона нет `list.get(index).unwrap_or(some_default_value)`?

Наверное, потому, что это питон. Эх...

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

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

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

#            ┌──────────────┬─ один доступ к памяти, два сравнения
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)

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 01:12 pm
Powered by Dreamwidth Studios