Haruchunのブログ

大学生の'春'のお勉強の備忘録

【Python】⑱内包表記

f:id:Haruchun:20200513155917j:plain

 

始めに

前回は辞書について学んでいきました。

今回は内容表記について学んでいきましょう。

 

前回の記事はこちら

haruchun.hatenablog.com

 

 

 

内包表記とは

内包表記という機能を使うと、リストなどのデータ構造を定義するプログラムを簡潔に書けます。

内包表記はコンプリヘンション(comprehension)とも呼ばれます。

 

例➀内包表記

例として[1,4,9,16,25,36,49,64,81]というリストを定義する定義するリストを書いてみます。

 

リストについてはこちら

haruchun.hatenablog.com

 

 

比較として、リストのappendメソッドによる要素の追加を使って書いてみましょう。

f:id:Haruchun:20200513114936p:plain

今までの知識で階乗のリストを書こうとすると、上記のようなプログラムになります。

 

それでは内包表記を使って、同じリストを作るプログラムを簡単に書いてみましょう。

f:id:Haruchun:20200513115930p:plain

内包表記では上記のように書くことができます。

以前までの知識では3行にわたって書く文章でしたが、内包表記を使用することで1行で書くことができ、とてもシンプルです。

 

 

上記のようにリストの内包表記では以下のように表します。

----------

[式 for 変数 in イテラブル]

----------

イテラブルの部分には、リストや文字列、range関数やenumerate関数などを指定することができます。

 

 

 

内包表記とif

内包表記にifを組み合わせると、条件に合う値だけをリストについて追加することができます。

以下のように表します。

----------

[式 for 変数 in イテラブル if 条件]

----------

 

例➁内包表記とif

1~10までの数のうち、3の倍数の数だけを選択し、リストを作成します。

f:id:Haruchun:20200513125545p:plain

 

また、内包表記を使って集合や、辞書を作成することもできます。

内包表記による集合の作成

----------

{式 for 変数 in イテラブル if 条件}

----------

 

内包表記による辞書の作成

----------

{キーの式 : 式の値 for 変数 in イテラブル if 条件}

----------

 

 

 

内包表記と三項演算子

三項演算子とは、条件に応じて異なる値を返す演算子です。

if文などの条件を表す式と紛らわしいので、今回は三項演算子と呼びます。

三項演算子は、以下のように表します。

----------

Trueの値 if 条件 else Falseの値

----------

通常のif文でも表すことはできますが、三項演算子では簡潔にプログラムを書くことがあります。

 

例➂三項演算子

xの数値が3の倍数か、そうではないかを判断するものを書きます。

3の倍数の時'xは3の倍数です'、3の倍数以外の時は'xは3の倍数ではありません'と表示します。

f:id:Haruchun:20200513154857p:plain

x=3は、3の倍数であるため上記のように表示されます。

 

f:id:Haruchun:20200513154748p:plain

x=2は、3の倍数ではないため上記のように表示されます。

 

 

 

終わりに

今回は内包表記について学んでいきました。

 

正直、慣れていないため難しく感じてしまうのですが、数行に渡って書いていたものをたった1行でまとめて書けることはすごい魅力ですよね。

シンプルで美しいプログラミングができるよう頑張りましょう!