Python リスト内包表記でリストを簡潔に作成する

スポンサーリンク

Pythonではリスト内包表記を使ってリストを簡潔に作成することができます。

リストは配列のことですが、このリストを作成するのに簡潔に記述する方法に「リスト内砲表記」があります。

さっそくPythonでリスト内包表記でリストを簡潔に作成していきましょう!

Python リスト内包表記の使い方

リスト内包表記の構文

# リストを作成(リスト内包表記)
[変数 for ~ in [要素1,要素2,要素3・・・]] 

FORループは通常の記述の仕方です。詳細はこちらを参照してください。

参考ページPython ループの書き方 FOR LOOP

このFORループの前に変数を定義し、ループ処理の結果を変数に代入します。

リスト内包表記でリストを作成する

# リスト内包表記を使う
lst = [i for i in range(1,5)]
lst
#[結果] [1, 2, 3, 4]

リスト内包表記で「1,2,3,4」を格納するリストを作成しました。

「for i in range(1,5)」は通常のループ処理です。「for」の前の変数「i」にループの結果が代入されます。

リスト内包表記を使わず一般的な記述だと下記のコードになります。

# リスト内包表記を使わない
lst = []
for i in range(1,5):
    lst.append(i)
lst
#[結果] [1, 2, 3, 4]

リスト内包表記の方が簡潔に記述することができるのがわかります。

リスト内包表記の変数を変更する

# リスト内包表記
num = 1
lst = [num for i in range(1,5)]
#[結果] [1, 1, 1, 1]

ここでは、FORループの代入先変数を「num」に変更しました。先ほどの例では、FORループ内の変数「i」とFORループの代入先が同じ「i」でした。

それを異なる変数にしてみました。結果はすべて「1」のリストが作成されました。

ループで代入はされますが、代入する値は先に宣言した「num = 1」が効いています。この処理は、「num = 1」が4回ループされるという意味になります。

リスト内包表記に if文をネストする

# ForループにIF文をネスト
lst = [i for i in range(1,11) if i % 2 == 0]
#[結果] [2, 4, 6, 8, 10]

ここでは、リスト内包表記にIF文をネストしました。このようにFORループに条件をつけることができます。

「if i % 2 == 0」は偶数であればという条件なので、偶数のときだけFORループの値でリストが作成されました。

# ForループにIF文をネスト
lst = [(i, j) for i in [1,2,3] for j in [3,4,5] if i == j]
#[結果] [(3, 3)]

Forループで扱う変数を2つにしてみました。

ここでは2種類のリスト[1,2,3]、[3,4,5]の要素は「for in」で「i, j」へ取り出し、if文で2つのリストの要素が一致するもの(if i == j)だけを返す処理をリスト内包表記で記述しました。

 

これでリスト内包表記を使ってリストを簡潔に作成することができました。通常の記述より簡潔に記述できるリスト内包表記は便利なので覚えておいて損はありません。

以上、Pythonのリスト内包表記でリストを簡潔に作成する方法でした。

 

コメント