「Pythonのリスト内包表記って何?」「Pythonのリスト内包表記って何が便利なの?」という疑問を持っていませんか?
そんな疑問を解消できるように、この記事ではPythonのリスト内包表記について解説しています。
この講座は、これからPythonを学ぼうとする初心者の方がPythonの基本を学ぶための講座です。
Pythonの代表的な構文の使い方を具体的なコードを例にして解説しています。
この記事は、以下のような方におすすめ!
Pythonのリスト内包表記について知りたい方
Pythonの基本を学びたい方
内包表記を知っていると、コード量をかなり削減できますよ!
この記事を読めば、Pythonのリスト内包表記の使い方を学ぶことができます!
Pythonの基本をマスターして、Pythonプログラマーとしての一歩を踏み出しましょう!
前回の振り返り
前回の記事では、Pythonのリストについて解説しました。
Pythonのリストはよく使われるデータ構造です。
Pythonのリストについて確認できていない方は、こちらの記事もチェックしておきましょう。
今回のゴール
では、改めて今回のゴールを確認しましょう。
今回のゴールは、Pythonのリスト内包表記を学び、実際に動作を確認することです。
リスト内包表記はとても強力です。
他の人が書いたコードの中に見慣れない記法があっても驚かないようにしましょう。
ご自身の環境でも実際に手を動かして確認してみてください!
リスト内包表記とは
リスト内包表記は、リストを作成する際に指定する要素の表現記法です。
リスト内包表記の構文は次のとおりです。
[変数を使った式 for 変数 in イテラブル if 条件]
イテラブルというのは、リストや範囲などの反復可能なデータ構造のことです。
と言われても、なにそれって感じですよね。
大量の要素を持つリストを作成する際に、すべての要素を記述するのは苦労するじゃないですか。
かといって、ループで要素を追加するのも面倒ですよね。
そんな時に便利なのがリストの内包表記です。
というわけで内包表記の動きを一緒に確認してみましょう!
内包表記でリストを生成する
0から19までの値を持つ要素をループで生成しようとした場合を例として比較してみましょう!
わかりやすいように、ループで生成する場合とリスト内包表記での場合とでご紹介しますね。
ループでリストを生成するコードを確認
まずは、ループでリストを生成する場合を確認しておきましょう。
for-in文で記述すると以下のようになります。
for val in range(20):
sample.append(val)
sample
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
リスト内包表記で生成する
次は、リスト内包表記で生成してみます。
sample = []
sample2 = [val for val in range(20)]
sample2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
for文で作成した場合と比べて非常にシンプル記述できていることがわかると思います。
このように要素の多いリストを作成する際にはリスト内包表記を利用することで、簡潔に記述することができます。
より複雑なリスト内包表記
次にさまざまなリスト内包表記例をご紹介します。
リストがネストされているようなリストを生成
1から3の数値のペアをリストで生成する例です。
for文で生成する
pairs = []
for a in [1, 2, 3]:
for b in [1, 2, 3]:
if a != b:
pairs.append([a, b])
pairs
[[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]
リスト内包表記で生成する
pairs2 = [[a, b] for a in [1, 2, 3] for b in [1, 2, 3] if a != b]
pairs2
[[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]
このように複数のループや条件をリスト内包表記で記述することも可能です。
いかがでしょうか。
この辺りの表現はとても強力ですよね。
リストから条件を指定して抽出する
あるリストの要素が3より大きい要素をもつリストを生成してみます。
sample3 = [1, 2, 3, 4, 5, 6]
[val for val in sample3 if val > 3]
[4, 5, 6]
リストの値に関数を指定する
リストの要素の絶対値をとるリストを生成してみます。
sample4 = [-1, -2, 3, 4, 5, 6]
[abs(val) for val in sample4]
[1, 2, 3, 4, 5, 6]
このように式の部分に関数を指定することもできます。
リストの値に5倍にするリストを生成する
あるリストの各要素を5倍したリストを生成します。
sample5 = [-1, -2, 3, 4, 5, 6]
[val*5 for val in sample5]
[-5, -10, 15, 20, 25, 30]
リストの内包表記の中に、リスト内包表記を記述する
さらに複雑にして、行列の行と列を入れ替えてみます。
sample6 = [[1,2,3],[4,5,6],[7,8,9]]
[[row[i] for row in sample6] for i in range(3)]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
さすがに行列の行と列を入れ替えるような計算を直接行うことは少ないかもしれないですが、リスト内包表記を使えば簡単に記述することができるんです。
まとめ
今回の記事では、Pythonのリスト内包表記について解説しました。
今回のポイントをまとめると、次のとおりです。
- リスト内包表記は、リストを作成する際に指定する要素の表現記法です。
- リスト内包表記は、要素数の多いリストを生成する際に簡単に記述できます。
Pythonのリスト内包表記を理解できたことで、これまでのコードをさらにシンプルに記述できるようになったのでは無いでしょうか。
Pythonのリスト内包表記は、シンプルでとても強力です。
ぜひこの記事を参考にして、便利なリスト内包表記を使ってみてください!
以上、最後までお読みいただきありがとうございました。
未経験からのITエンジニア転職に挑戦したい方へ
転職も含めて真剣にプログラミングスキルを手に入れたいとお考えの方に、おすすめの方法をご紹介します。
結論から言うと、それは転職活動とスキル学習を同時に進める方法です!
同時に進める理由は、転職成功までの時間を短縮するためなんですが、
でも昼間は学校や本業もあるのに、転職活動と学習を同時にって無理!
って思いますよね?
そんな忙しい方には、スキル学習と転職サポートが一体となているウズカレIT
しかも、学習サポートも転職サポートも無料で利用できます!
ウズカレITはITスクールのウズウズカレッジ
体系的かつ総合的に学習サポートを受けることができます。
ITエンジニアはまだまだ売り手市場で、未経験可の求人もたくさんあります。
一度、ウズカレITの無料相談で不安に思ってることなどを相談してみるのがオススメです。