#[Python]05章-06 内包表記の基礎
まず、以下のプログラムを見てください(プログラムを作成する必要はありません)
L = [] #空リストLを作成する
print(L) #Lの要素を出力
for i in range(10):
L.append(i) #appendメソッドで、リストLに要素を追加
print(L)
<実行結果>
【実行結果】
[]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
簡単に説明すると、空のリストLを作成し、いったん空のリストの要素をprint関数で出力しています。(もちろん空ですが)
そして、for文内に移動し、appendメソッドを用いてLの要素を1つずつ追加していきます。(appendメソッドは以前説明しました。)
最後にprint関数で要素の中身を出力しています。
しかし、この処理を1行で出力させることもできます。その方法として内包表記がありますので、説明していきます。
##内包表記によるリスト作成
内包表記にはいろいろあるのですが、おおよそ以下の記載方法で記載します。
[変数による計算結果 for 変数 in for 繰り返し対象]
「変数による計算結果」と記載しているのには理由はありますが、後ほど説明します。
まずは、実際に先ほどの上記のプログラムと同じ処理内容を、内包表記で記載してみましょう。今回はPython Consoleから以下のコードを入力してください。
>>> [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[ ]で囲っているのがリスト表記を意味しています。こう記載することで、特にappendメソッドや変数を使わずに1行でリストを作成することが可能です。
「変数による計算結果」としている理由について説明します。
例えば、リストに0.5刻みの値を出力するときに、**range(0, 10, 0.5)**と記載することはできません。(stepに小数を指定できない)
そこで、内包表記を使用します。実際には以下の通りに記載します。Python Consoleから以下のコードを入力してください。
>>> [i * 0.5 for i in range(10)]
[0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5]
なお、この内包表記の結果は変数に代入することもできます。
>>> ls = [i * 0.5 for i in range(10)]
>>> ls
[0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5]
##内包表記によるディクショナリ作成
リストだけでなく、ディクショナリも作成できます。Python Consoleから以下のコードを入力してください。
>>> Countries = ['Japan', 'Canada', 'China', 'America']
>>> {n[0:2] : n for n in Countries}
{'Ja': 'Japan', 'Ca': 'Canada', 'Ch': 'China', 'Am': 'America'}
今回はディクショナリなので、[ ]でなく、{ }を使って表記します。
各要素の先頭の2文字をキーとしています。それと値を組み合わせて出力させています。
##演習問題
演習問題を用意しました。ぜひ解いてみてください。なお、Python Consoleを利用してください。
【1】1~9の整数の2乗をした結果を内包表記を利用してリストを作成してください。結果は以下の通りです。
[1, 4, 9, 16, 25, 36, 49, 64, 81]
##最後に
今回は内包表記について触れましたが、気づいたことがありましたでしょうか?実は今回、Python Consoleしか使用していません。ほかの言語にはまだあまりありません。内包表記はコマンドとして入力ができます。
簡易的な表記ができることもできるので、ぜひ利用してみてください。
###【目次リンク】へ戻る