リストを逆順に表示

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

解答。

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の方は結構手ごろかもしれない。