この記事で分かること
- 内包表記の書き方が分かる
- 内包表記を使うべき時が分かる
Pythonの内包表記でfor文を使う概要
ここでは、Pythonの「内包表記」の書き方について説明します。内包表現は英語で「list comprehension」です。
主にFor文を使った内包表記の例を説明しますが、処理速度向上と、コード全体を俯瞰することができる(For文の中身はあまり重要視しない)という意味でソースコードの可読性向上に期待ができます。
Pythonの内包表記でfor文を使う前提環境
Pythonで内包表記の使い方の前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。
もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
Pythonの内包表記でfor文を使うサンプルプログラム
内包表記の使い方の具体例を説明します。内包表記の効果を説明するために、「内包表記を使わない例」と「内包表記を使った例」を使った例を比較しながら、それぞれを説明します。
内包表記を使わないサンプルプログラム
まず、内包表記を使わない普通のFor文を使い、配列を1つずつ取出し、絶対値計算をして、リストに再び格納するという処理のサンプルコードとその結果を示します。説明は次の順番で説明します。
- 内包表記を使わないサンプルプログラムの作成
- 内包表記を使わないサンプルプログラムの実行結果
1.内包表記を使わないサンプルプログラムの作成
まずは、「内包表記」を使わない例のサンプルソースコードです。ソースコードの内容は下記の順番で動作するようにします。
if __name__ == '__main__':
number_list = [-1,-2,-3,-4,-5]
print(number_list)
after_list1 = []
for number in number_list:
after_list1.append(abs(number))
print(after_list1)
- 変数「number_list」を-5から-1までの整数のリストで初期化する。
- 変数「number_list」の内容を表示する。
- 変数「after_list1」を空のリストで初期化する。
- 「number_list」を1つずつ変数「number」に格納しながら、次の処理を繰り返す。
- 変数「number」の絶対値を変数「number_list」に追加する。
- 変数「after_list1」の内容を表示する。
2.内包表記を使わないサンプルプログラムの実行結果
下の表示のように、変数「number_list」の内容が1行目、変数「after_list1」の内容が2行目に表示されています。
[-1, -2, -3, -4, -5]
[1, 2, 3, 4, 5]
内包表記を使ったサンプルプログラム
次に、先程行った配列を1つずつ取出し、絶対値計算をして、リストに再び格納するという処理を、内包表記を使った例で示します。説明は次の順番で説明します。
- 内包表記を使った例のサンプルプログラムの作成
- 内包表記を使ったサンプルプログラムの実行結果
1.内包表記を使った例のサンプルプログラムの作成
次は、「内包表記」を使わった例のサンプルソースコードです。ソースコードの内容は下記の順番で動作するようにします。
if __name__ == '__main__':
number_list = [-1,-2,-3,-4,-5]
print(number_list)
after_list2 = [abs(number) for number in number_list]
print(after_list2)
- 変数「number_list」を-5から-1までの整数のリストで初期化する。
- 変数「number_list」の内容を表示する。
- 変数「after_list2」を空のリストで初期化する。
- 「number_list」を1つずつ変数「number」に格納し、変数「number」の絶対値で変数「after_list2」のリストを初期化する。
- 変数「after_list2」の内容を表示する。
2.内包表記を使ったサンプルプログラムの実行結果
上の内包表記を使ったプログラムでも、下の表示のように、変数「number_list」の内容が1行目、変数「after_list2」の内容が2行目に表示されています。
これで内容表記を用いると、for文を回さないで短い行で「after_list2」のようなリスト変数を作ることができることが分かりました。
[-1, -2, -3, -4, -5]
[1, 2, 3, 4, 5]