Python のリスト内包表記で If-Elif-Else を使用する

Salman Mehmood 2023年6月21日
Python のリスト内包表記で If-Elif-Else を使用する

この説明では、連鎖とは何か、Python では if-elif-else またはリスト内包表記で連鎖を適用する方法を学びます。

Python の連鎖を利用して、リスト内包表記で if-elif-else を使用する

Python コミュニティでの興味深い質問は、リスト内包表記で if-elif-else を使用する方法です。 リスト内包表記で if-else を使用する方法は既に知っていますが、Python スクリプトを作成する際にリスト内包表記ですべてのコードを記述できるわけではないことを知っておく必要があります。

Python のリスト内包表記で連鎖を実装する

リスト内包表記内に if-elif-else の概念はありませんが、チェーンを使用できます。これは代替手段になります。 まず、連鎖とは何かを知る必要があります。

連鎖は、次のような複数の条件がある場合に使用されます。

if condition1:
	code1
elif condition2:
	code2
elif condition3:
	code3
else condition4:
	code4

上記のコードは、連鎖のワークフローが何もしないことを説明しています。 これは、最初の条件が満たされない場合、2 番目の条件が実行されることを示しています。

else ブロックは、条件が満たされない場合に実行されます。

これらの if-elif-else をチェーンに変換しましょう。ただし、すべての条件に 1つのステートメントが含まれている場合に機能します。 チェーンを作成するには、code1 から開始し、命令が true を満たすかどうかをチェックします。次に、コントロールは else code2 if condition2 である 2 番目のチェーンをチェックします。

code1 if condition1 else code2 if condition2 else code3 if consition3 else condition4

else code2 if condition2 が true を満たす場合、制御は 3 番目のチェーン、else code3 if consition3 に進みます。 そして、それも true を満たす場合、制御は 4つ目の連鎖、つまり else condition4 に進みます。

これは連鎖と呼ばれ、その仕組みです。

Python での if-elif-else によるリスト内包表記

例を挙げて、Python スクリプトにジャンプし、このシナリオを連鎖に適用する方法を見てみましょう。

いずれかの条件が真になった場合にステータスを保存するプログラムがあるとします。 このプログラムでは、リストを反復処理し、いくつかの条件をチェックして、結果を status という空のリストに追加します。

list = [1, 0, 2, -3, 11, 0, -1]

status = []
for i in list:
    if i > 0:
        status.append("Positive")
    elif i < 0:
        status.append("Negative")
    else:
        status.append("Zero")
print(status)

出力:

['Positive', 'Zero', 'Positive', 'Negative', 'Positive', 'Zero', 'Negative']

上記のコードをリスト内包表記に変換すると、1 行のコードになります。 リスト内包表記はすべてのコードで機能するわけではなく、elif ブロックまたは節を使用できないことを思い出してください。ただし、連鎖によって elif を使用します。

リスト内包表記を作成するには、空のリストを作成し、3つのチェーンを配置します。 また、上記の疑似コードで、チェーンを機能させる方法も見てきました。

リスト内包表記は append() 関数を許可しませんが、要素自体を追加します。 チェーンを使用して、複数の条件を配置できます。

print(["Positive" if i > 0 else "Negative" if i < 0 else "zero" for i in list])

出力:

['Positive', 'zero', 'Positive', 'Negative', 'Positive', 'zero', 'Negative']
著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

関連記事 - Python List