リストの範囲外の要素のアクセス

以下の方法を考えた。

# 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さんのスライシングが一番簡単で分かりやすいかも。