Python基本文法まとめ(6) 内包表記の使い方

自分(初心者)用のPython3の基本文法メモ
第6回目は内包表記について

Python3-内包表記

内包表記

内包表記を使うとforを使ってやリストや辞書、集合を作る文を完結に記述できる。
リスト、辞書、集合には内包表記があるが、タプルには内包表記はない。

リストの内包表記

通常のリストのように[]を使う。
[]の中にfor文を記述し、for文で出力される値でリストを作成することができる。

リスト内方表記の書式

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

(例)1〜5までの数字を10倍した値でリストを作成する
lst = [num * 10 for num in range(1,6)]
print(lst)

#結果
[10, 20, 30, 40, 50]

内包表記を使わない場合
内包表記を使わないで上記と同じ処理をするには、for文を使って以下のように記述する。
lst = []
for num in range(1,6):
    lst.append(num * 10)

条件付きのリスト内方表記

内包表記にif文を追加することで、リストに含める値に条件をつけることができる。
[式 for 変数 in イテラブルオブジェクト if 条件式]

(例)1〜50までの10で割り切れる値の二乗をリストにする
lst = [num ** 2 for num in range(1,51) if num % 10 == 0]

結果
[100, 400, 900, 1600, 2500]
→10の二乗、20の二乗、30の二乗、40の二乗、50の二乗でリストが作られた。

上記と同じ処理を内包表記を使わないで記述するには以下の通り。
lst = []
for num in range(1,51):
    if num % 10 == 0:
        lst.append(num ** 2)




辞書の内包表記

リストと同じように辞書も内包表記を使って作ることができる。
通常のリストのように{}を使い、その中にfor文を記述する。

辞書の内包表記の書式

{キー:値 for 変数 in イテラブルオブジェクト}

辞書の内包表記を使うと2つのリストを使い、片方のリストの要素をキー、もう片方のリストの要素を値とする辞書を作ることができる。

以下の例は、日本語の色のリストと英語の色のリストから日本語をキー、英語を値とした辞書を作るもの。
jpn_colors = ['赤','青','黄']
eng_colors = ['red','blue','yellow']

dic_colors = {jpn:eng for (jpn,eng) in zip(jpn_colors,eng_colors)}

print(dic_colors)

結果
{'青': 'blue', '黄': 'yellow', '赤': 'red'}


集合の内包表記

リストや辞書と同じように集合も内包表記で作成することができる。
集合の内包表記は、普通の集合と同じように{}を使い、その中にfor文を記述する。

集合の内包表記の書式

{式 for 変数 in イテラブルオブジェクト}

集合の要素には重複がないという特徴を活かし、重複があるリストから重複を除いたリストを作ることができる。その際に集合の内包表記を使うことで簡潔にプログラムを記述することができる。

以下の例は、重複のあるlst1から重複のない10以下の要素からなるlst2を作るもの。
集合の内包表記を使い、lst1からnumという集合を作り、その集合をlist()を使ってリストに変換している。
lst1 = [1,3,3,3,5,5,5,7,11,11,15,15,15]
lst2 = list({num for num in lst1 if num <= 10})

print(lst2)

結果
[1, 3, 5, 7]



今回はここまで
次回は関数について


基礎を終えたらPythonでのデータ分析にチャレンジしようと思う


0 件のコメント :