Pythonのリスト内包表記とは

こんにちは、のっくんです。

 

今日はPythonのリスト内包表記(ナイホウヒョウキ)について解説していきます。

英語だと、List Comprehensionsと言います。

 

例えばfor文で1〜10の数値に1を足す処理するときは以下のように書きます。

numbers = [1,2,3,4,5,6,7,8,9,10]

# リスト内包表記を使わずに書く
new_numbers = []
for number in numbers:
    number += 1
    new_numbers.append(number)

 

これは普通のfor文を使った書き方ですね。

これをリスト内包表記を使うと1行で書けます。

new_numbers = [number+1 for number in numbers]

シンプルで普通に書くよりも高速です。

 

辞書にも使えます。例えば1~10の数値をキーとして、辞書の値にアクセスする場合には、以下のようになります。

# 辞書にも適用できる
number_dict = {
    1: "apple",
    2: "book",
    3: "cat",
    4: "dog",
    5: "egg",
    6: "fog",
    7: "google",
    8: "hook",
    9: "ink",
    10: "kate"
}

words = [number_dict[number] for number in numbers]

 

関数を適用することも可能です。例えば、1~10までの数値を割り算して四捨五入する場合は以下のように処理が書けます。

# リスト内包表記を関数にも適用する
# 3で割った数字を四捨五入して返す
def divide_by_3(number):
    div_value = round(number/3)
    return div_value


new_numbers = [divide_by_3(number) for number in numbers]

round関数は四捨五入する関数です。返り値は整数型です。

 

if分も適用できます。例えば、偶数のみを2倍したい場合には以下の通り。

new_numbers = [number * 2 if number % 2 == 0 else number for number in numbers]

 

おわり。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog