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']
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