Python入門 内包表記(動画あり)

Pythonの内包表記とは、ひとつ以上のイテレータ からPythonデータ構造をコンパクトに作れる形式です。

内包表記

内包表記が書けるようになると、データ分析でもループ文を1行で書けたりと便利です。
内包表記にはリスト内包表記、辞書包括表記、集合内包表記、ジェネレータ内包表記があります。

リスト内包表記

[expression for item in iterable]

内包表記を使ったリストの作成

number_list = [number for number in range(1,6)]
number_list

結果
[1, 2, 3, 4, 5]

enumerate関数を併用して作成するリスト
インデックス番号と値がタプルになってリストができます。

number_list = [(i, number) for i, number in enumerate(range(1,6))]
number_list

結果
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]

上のサンプルをformat関数を使って整形した例

number_list = ['{}:{}'.format(i,number) for i, number in enumerate(range(1,6))]
number_list

結果
[‘0:1’, ‘1:2’, ‘2:3’, ‘3:4’, ‘4:5’]

for文で取り出した値を加工する例

number_list = [number + 1 for number in range(1,6)]
number_list

結果
[2, 3, 4, 5, 6]

リストの要素をint型に変える例

num = [2.8, 1.4, 3.5, 4.1, 5.9]
num_int = [int(num_int) for num_int in num]
num_int

結果
[2, 1, 3, 4, 5]

リスト内包表記の条件式を追加

[expression for item in itarable if condition]

if文と併用した例

a_list = [number for number in range(1,6) if number % 2 == 1]
a_list

結果
[1, 3, 5]

辞書包括表記

{key_item:value_item for item in iterable}
word = 'letters'
letter_counts = {letter:word.count(letter) for letter in word}
letter_counts

結果
{‘e’: 2, ‘l’: 1, ‘r’: 1, ‘s’: 1, ‘t’: 2}

dct = {i: i*2 for i in range(3)}
dct

結果
{0: 0, 1: 2, 2: 4}

zip関数と内包表記では同じことができる

zip()で辞書作成

english = ['dog', 'cat', 'bird', 'monkey']
japanese = ['犬', '猫', '鳥', '猿']
dic = dict(zip(english,japanese))
dic

結果
{‘bird’: ‘鳥’, ‘cat’: ‘猫’, ‘dog’: ‘犬’, ‘monkey’: ‘猿’}

内包表記で辞書作成

dic = {e:j for e,j in zip(english,japanese)}
dic

結果
{‘bird’: ‘鳥’, ‘cat’: ‘猫’, ‘dog’: ‘犬’, ‘monkey’: ‘猿’}

集合内包表記

{ item for item in iterable }

参考になった書籍

プログラミングを少しでも経験がありPython の文法を学習する場合は、「入門 Python 3」が良いと思います。長く使えます。

「退屈なことはPython にやらせよう」はオブジェクト指向の解説がないです。代わりにPythonを使った便利な実例が初心者には嬉しい内容です。正規表現から、簡単なスクレイピング 、画像操作などあります。ただし、中級者以上には少し物足りないかもしれません。

Python入門一覧

Pythonサンプルのダウンロード

ここでダウンロードする「list_comp.ipynb」ファイルは、このPython動画で使用したものです。

list_comp.ipynb