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

スポンサーリンク

Pythonのリスト内砲表記について。

この記事の内容はコチラです

  • Pythonのリスト内砲表記の使い方
  • リストを簡単に記述する

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

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

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

リスト内包表記の構文

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

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

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

リスト内包表記:通常パターン

Pythonで「1,2,3,4」を格納するリストを作成します。

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

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

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

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

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

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

リスト内包表記:変数を変更するパターン

# リスト内包表記
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のリスト内包表記でリストを簡潔に作成する方法でした。

 

コメント