【Python】リスト内包表記でifを使う
リスト内包表記とは?
リスト内包表記とは、リストや辞書に対してループ処理を実行し、
再びリストを返してくれる処理を指します。
書き方
まずは、リストを作成
sample = [] for i in range(10): sample.append(i) print(sample)
sampleの中身を確認
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
リスト内包表記の記法
[x*2 for x in list]
list
は変数に格納されたリストに当たります。
x*2
はリストから取り出された値に対しての処理が行われる箇所です。
今回は、取り出された値(x
)を2倍にする処理が実行されます。
先程作成したsampleというリストに対して処理を実行してみましょう。
[x*2 for x in sample]
結果
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
リスト内の値それぞれが2倍されましたね。
また、実行した結果を変数に格納する場合は、
以下のように記載します。
sample2 = [x*2 for x in sample]
リスト内包表記でif文を使う
リスト内包表記を実行する際に、if文で条件分岐をさせることが可能。
書き方
[x*2 for x in sample if x !=0]
if x != 0
の部分で条件分岐をしており、
リストから取り出された値が0ではない場合に2倍される。
出力結果
[2, 4, 6, 8, 10, 12, 14, 16, 18]
elseも使う場合
[x*2 for x in sample if x !=0 else x*3]
実は上の書き方ではエラーになります。
if else
の書き方をしたい場合には、以下のように書きましょう。
[x*2 if x == 1 else x*3 for x in sample]
後ろに書くのではなく、forの前にif else
を記載することで、
リスト内包表記の書き方でelseも含めた条件分岐が可能です。