nanana、リストの内包表記を学ぶ(Python学習記録-5日目-)

■まえおき

下記の記事でPython学び直してやるぞーと宣言しました。 nanana-dot.hatenablog.com

今回は前回のリストのときに触れられなかった「リストの内包表記」を学びたいと思います。

■今日の学び

  • リストの内包表記の書式
  • 内包表記の利点

■内包表記ってなんだ

新しいリストをつくるときに、
繰り返し処理をして、それらの値を要素とするリストを作りたい場合があります。
たとえば、いくつかの値が入っているリストに対してそれらの3乗した値をリストにしようとしたとき、
通常の書き方では以下のようになると思います。

#元々のリスト
l = [2,3,5,7,11]
cube = []
#forで繰り返し処理
for x in l:
    cube.append(x**3)
cube
#出力
[8, 27, 125, 343, 1331]

しかし、Pythonでは次のような、リストの内包表記と呼ばれる書式があります。

[処理 for 変数 in イテレート可能なオブジェクト]

これをつかって、さきほどの3乗のリストをつくるコードは

#元々のリスト
l = [2,3,5,7,11]
#リストの内包表記
cube = [x**3 for x in l]

とたった1行で書くことができます。 なんかちょっとpythonっぽくていいですね。

リストの内包表記にはforだけではなく、ifも使えます。
ある値の約数を返すようなコードを書いてみます。 約数は、自分と1を含め割り切れる値ですので、次のように書けるでしょう。

#21の約数をリストにするコード
val =21
[x for x in range(1,val) if val % x == 0]

#出力
[1,3,7]

となります。

内包表記は記述が簡潔になり、可読性があがるという利点以外にも、 コードのサイズのコンパクト化や処理速度の向上といった利点もあるようです。

forやifが重なり見辛いと思ったら、内包表記にしてみるにも今日からできるようになりました。

さて、次回は「辞書型」についてまとめます。


本日の学習時間:1時間
累計の学習時間:9時間