リストの範囲外の要素のアクセス
- jijixi's diary: そのインデックスに要素が存在するかわからないときの書き方を考える (http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070816#p02)
以下の方法を考えた。
# 1) EAFP try: [1,2,3,4][5] print 'ok' except: print 'ng' # 2) and,orテク a = [1,2,3] len(a)>1 and a[1] # => 2 len(a)>5 and a[5] # => False 5 in range(len(a)) and a[5] # => False not 5//len(a) and a[5] # => False # 3) if〜else a[5] if len(a)>5 else None # 4) 配列を伸ばす a = [1,2,3] (a + [None]*(5-len(a)+1))[5] # => None # 本当は (a + repeat(None))[5] と書きたい! # 5) 辞書に無理やり変える a = [1,2,3] dict(enumerate(a)).get(5) # => None
結局、jijixiさんのスライシングが一番簡単で分かりやすいかも。