sasamiya’s exercise book

ITについて学んだことをブログにしていきます。

お願い!リスト内包表記を使って

リスト内包表記という蜜の味を覚えてしまった人です。
まだまだ最近使い始めたばかりですが.....


for文を普通に使うとこうですよね?

for i in range(5):
    print(i)
#>0, 1, 2, 3, 4

おそらくpythonを使っているならわかると思います。
ただこれ...2行使うやん
もっと短くしたい。

リスト内包表記を使う...

print([i for i in range(5)])
#>[0, 1, 2, 3, 4]

多分初めての人には少しわかりずらいかも、
それにこのプログラムだと恩恵が少なすぎる.....

リスト内包表記をもっと使ってみる

  • mapみたいなことをしてみる
print([i*2 for i in range(10)])
#>[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

結果を見てわかるようにリスト全体の要素をすべて2倍するプログラムです。
map機能を使えば同じことをできるけど....確かPythonはmapよりリスト内包表記使うことを推奨してたような気がする


  • filterみたいなことをやってみる
print([i*2 for i in range(10) if i%2==0])
#>[0, 4, 8, 12, 16]

2の倍数を出すプログラム
めっちゃ便利じゃない?

リスト内包表記はforより速かった

リスト内包表記はfor文を使って書くより速い

ただ注意として「リスト内包表記コード短いし速いからどんな複雑なリスト内包表記使ってもいいぜぇ!!」
これやめてください。自分だけだったらいいです。人が見るときめっちゃifやforが一文にまとめられていたら見にくい。
悪いコードになると思う。
使用するときは少し気を付けようね

最後に

間違えなどがありましたら指摘していただけるとありがたいです。