リストに辞書のような安全な「取得」メソッドがないのはなぜですか?
>>> d = {'a':'b'}
>>> d['a']
'b'
>>> d['c']
KeyError: 'c'
>>> d.get('c', 'fail')
'fail'
>>> l = [1]
>>> l[10]
IndexError: list index out of range
l[10:11]
代わりにl[10]
、たとえばの代わりにスライスを要求した場合、IndexErrorを発生させずにリストから常に空のサブリストを取得できます。それが存在する場合は()のThサブリスト)は、所望の要素を有することになる
.get
。これはと同等ですl[i] if i < len(l) else default
が、より読みやすく、簡潔で、i
再計算することなく式になることができます
None
か、存在しない場合のみです。言うのは良かったx = expensive().get(0, None)
ので、高価なものの無駄な戻りを一時変数に入れる必要はありませんでした。