リストを逆順に表示

リスト状のものを逆順に表示するプログラムを書いてください。

解答。

def rprint(L):
  i = 0
  while True:
    i -= 1
    try:
      yield L[i]
    except:
      break

for n in rprint([1,2,3,4,5]):
  print n

EAFP(ゴメンナサイはオネガイシマスより楽)を利用して書いた。いつか使おうと狙っていたので自分でも結構気に入っている。時間計測したらreversedよりかなり遅いが、実装がC vs Pythonなのである意味当たり前。しかし、かなりPythonらしい実装だと思う。breakの代わりにraise StopIterationしても良いと思うが、どっちが良いのだろう。同じような使い方ができると思うので、あとは実行時間やソースの可読性などで決まるだろうか。


意図してかもしれないが、どう書く?orgは結構簡単な問題が多い。このぐらいの問題の方が私みたいな素人が短時間で遊べるのは良いのだが、慣れた言語ではいまいち手ごたえがない。もう少し難易度の高い問題があった方がプログラミングの能力は上がりそう。キミならどう書く2.0の方は結構手ごろかもしれない。

ICFP Programming Contest

k.inabaさんのICFPのメモを見たが、すごすぎる。自分には到底不可能な領域にいる感じ。C++やDなど静的言語に対する自分の熱は冷めたな…。近い内に今の会社で初のC++開発をする機会ができそうだが、苦痛の種になるかも。その内、動的言語が主流になるであろうから全てに精通するのは今の自分には完全に無理だな…。