Index Errorを扱う その2

昨日のエントリの続きです。

リストにおいて外側のインデックスが参照された場合ある値を既定値として返す方法についてです。
Javascriptのように

var a = [0,1,2,3,4];
		
window.alert(a[5] || "out"); // out

みたいに書く方法がないかなと考えていたのですが例外を判定する関数を作ればできないこともなかったです。

def indexErrCatch(tList,index):
  try:
    return tList[index]
  except IndexError:
    return False
  
a = [0,1,2,3,4]

for i in range(10):
  print (indexErrCatch(a,i) or "out")

のようにすれば実行結果は

out
1
2
3
4
out
out
out
out
out

(この場合a[0]が0なので"out"になってしまっていますが)となるのでJavascript風に書けます。

ただそもそもはJavascript風に書くこと自体が目的ではなく、上のようにループでリストの外側まで走査する可能性がある場合にtry〜を書かずに済む方法がないか、という意図だったのでもっとうまいやり方がある気がしています。私がJavascriptしか勉強したことがないから知らないだけで実はPythonの挙動の方が普通で一般的なやり方があるのかもしれません。