どうも!リョクちゃです。
今回は、内包表記と呼ばれる手法を用いて
プログラムの行数の短縮化を目指していきます。
こんな方におススメです。
- 内包表記について知りたい。
- プログラム(ソースコード)の行数を短くしたい。
- プログラムをシンプルにしたい。
ちなみに前回の記事はこちら
目次
内包表記
以下の記事で簡単に触れていましたので載せておきます。
改めて、内包表記とは、
- リストなどの配列をシンプルに作成する方法
- 内包表記を用いると複数行にわたる処理を1行で書けるようになります。
結果として、プログラムを簡潔に書くことができます。
例えば、以下のプログラムがあるとします。
1 2 3 4 5 6 |
lstRec = [] for i in range(1, 11): lstRec.append(i ** 2) print(lstRec) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] |
このプログラムは、1~10の数値を2乗した値をリスト変数lstRecに追加し、表示しています。
i**2とすることで、iに代入された値を2乗しています。
これを内包表記で表すと、
1 2 3 |
lstRec2 = [i ** 2 for i in range(1, 11)] print(lstRec2) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] |
内包表記を使わない場合のfor文以降の処理が内包表記では、1行にまとめられています。
最終的な結果はどちらも同じになります。
気になる方は実際にプログラムを走らせてみてください。
このように、内包表記を用いると複数行にわたる処理を1行に、
簡潔に書くことができてしまいます。
内包表記とif文
次は以下のプログラムがあります。
1 2 3 4 5 6 |
lstRec = [] for i in range(1, 11): if i % 2 == 0: lstRec.append(i) print(lstRec) |
このプログラムは、1~10の数値の中で偶数をリスト変数lstRecに追加し、表示しています。
これを内包表記で書くと、
1 2 |
lstRec2 = [i for i in range(1, 11) if i % 2 == 0] print(lstRec2) |
このように書くことができてしまいます。
なんと、内包表記内にif文を入れてしまうことができるのです。
これにより、簡潔にまとめることができてしまいます。
内包表記を使わず書いた場合は、3行にわたる処理が、
内包表記を使うことで1行にまとめることができてしまいます!
便利ではあるのですが、Pythonの特徴である可読性については、うーんと
首をひねるのですが、そこは気にせずということなのでしょうか?
※まだプログラム歴が短い私には、可読性を理解できていないのか何とも言えません(笑)
ゼロからPythonを勉強したいなら、下記がおススメ。
ゼロから始めるPython入門講座(オンライン・無料)+【テックジム】
体系だって学びたいなら、こちらの書籍がおススメ。
※ある程度プログラムの体系がわかってる人向け、完全初学者には難しいかもです。
まとめ
内包表記を使って、プログラムの行数を短縮する方法について紹介しました。
また、内包表記にif文を入れて、コードを書く方法にも触れました。
プログラムをシンプルに書きたいと思っている読者の参考になれば嬉しいです。
最後までお読みいただきありがとうございます。