Python
python3

Python リストの逆順

Python リストの逆順

Pythonのリストを逆に出力するのって・・・ あれどうやるんだっけ?

そんなビギナーな私は

  • 「Python リスト 逆」
  • 「Python リスト 反転」

などを毎回検索してしまう。

ここの記事にたどり着いたということは皆さんも同じなのだろう・・・
※そうでない人にはすみません

そこで一応方法を書いておきます
※python3で書いています

 reversedメソッドの使用

l = [0, 1, 2, 3, 4]

for i in (reversed(l)):
    print(i)

 スライスで逆順にする

l = [0, 1, 2, 3, 4]

for i in l[::-1]:
    print(i)

その他

他にもないかと、stackoverflow を確認していたら、こんなのが書かれていた。

l = [0, 1, 2, 3, 4]

for i in range(len(l) // 2):
        l[i],l[-1-i] = l[-1-i],l[i]

アルゴリズムセンスがない私には、見た瞬間さっぱり分からなかったがみなさんはもうお分かりだろう。

私は風呂に入った時に分かったのだが・・・・・

このままのソースだと分かりにくいので、以下のように修正してみた。
【修正したコード】

l = [0, 1, 2, 3, 4]

for i in range(len(l) // 2):
        print("Before,i:{0},l[i]:{1},l[-1-i]:{2}".format(i, l[i], l[-1-i]))
        l[i],l[-1-i] = l[-1-i],l[i]
        print("After,i:{0},l[i]:{1},l[-1-i]:{2}".format(i, l[i], l[-1 - i]))
        print("\r")

print(l)

【結果】

Before,i:0,l[i]:0,l[-1-i]:4
After,i:0,l[i]:4,l[-1-i]:0

Before,i:1,l[i]:1,l[-1-i]:3
After,i:1,l[i]:3,l[-1-i]:1

[4, 3, 2, 1, 0]

イメージしやすくすると、以下のような感じです。
image.png

こんな遊び心のある回答、いつかはしてみたいなと。
大切ですね。

参考資料