python

【python】内包表記

リスト等のコンテナデータの計算を簡潔に記述できる Python 特有の機能を紹介します。 特にリストに対する内包表記である、リスト内包表記が有名です。

リスト内包表記

あるコンテナから、別のリストを簡単に生成することができる。
記述法

・記述法
[expression for var in iterable]iterable には、リストや文字列、range などのコンテナデータが入ります(通常の for 文で使えるものが使えます)。 var は普通の変数で、 expression には式を書きます。 Python はまず for を展開し、変数 var に iterable の各要素を代入しながら、expression を計算します。

・フィルター
[expression for var in iterable if condition]のようにif に条件式を続けて書くことで、その条件を満たす値だけを for は列挙します。

 #偶数の平方数だけからなるリストを生成します。
    even_lst = [v for v in range(10) if v % 2 == 0]
    print(even_lst)
    #[0, 2, 4, 6, 8]
squares = []
    for v in range(10):
        squares.append(v ** 2)
    print(squares)
    # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

    #リスト内包表記
    squares = [v ** 2 for v in range(10)]
    print(squares)
    # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

集合内包表記

[] で括って書くリスト内包表記はリストを生成する。 同様に、別の括弧で括ることで、別なコンテナデータを生成することができる
{x for x in range(30) if x % 2 == 0}
# {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28}
1 2