技術系サラリーマン勉強記

数学、物理、プログラミングなど日々勉強した内容を取り扱っていきます。

【Python】 内包表記を知る

入門 Python 3を読んでいたら内包表記という書き方を知りました。内包表記を使うとfor文(+条件付きfor文)を一行でシンプルに書けるようになります。本によると内包表記が使えるかがpython初心者卒業レベル卒業の目安になるらしいです。卒業に向け内包表記が使えるときは使っていきたいと思います。

内包表記とは

内包表記はFor文をシンプルに一行で書く書き方です。さらに、if文が入ったfor文も一行で書くことができます。以下ではリストを対象としたリスト内包表記について書きます。

基本形

基本的な書き方は以下の通り。

  • [式 for 変数 in イテラブルオブジェクト]

式は「f(x)」、変数は「x」とすると分かりやすいかもしれません。イテラブルオブジェクトがN個の要素x1~xNから成るとすると、リスト内包表記の出力は[f(x1), f(x2), ・・・, f(xN)]というN個の要素を持ったリストになります。

例:初項1、交差2の等差数列の第10項までのリスト

num_list = [1+2*(i-1) for i in range(1, 11)]
print(num_list)

# [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]  

発展形

for文にさらに条件式(if文)を入れることもできます。書き方は以下の通り。

  • [式 for 変数 in イテラブルオブジェクト if 条件式]

これは、「条件式 == True」を満たすイテラブルオブジェクトのみ出力されることを意味します。例を見た方が分かりやすいかもしれません。

例:初項1、交差2の等差数列の第10項まで数列の内、偶数項を抽出したリスト

num_list2 = [1+2*(i-1) for i in range(1, 11) if i % 2 == 0]
print(num_list2)

# [3, 7, 11, 15, 19]

参考文献