For-else: Python の奇妙だが便利な機能

王林
リリース: 2023-04-13 20:43:01
転載
1326 人が閲覧しました

For-else: Python の奇妙だが便利な機能

はじめに

どのプログラミング言語を使用するとしても、私たちは皆「if-else」ステートメントを書きますが、「for-else」はどうでしょうか?

C、C、Java などの多くの言語では、ループの後に「else」を使用することは完全に間違っています。しかし、Python はエレガントな言語として、この「奇妙だが便利」な機能を備えています。正しく使用すれば、コードはよりクリーンになります。

この記事では、Python の "for-else" 関数を紹介し、簡単な例を通してその正しい使用方法を説明します。

「For-Else」機能の基礎知識

「for-Else」機能は、初めて見ると奇妙に見えてわかりにくいと思います。 (この関数を最初に使い始めたとき、else のインデントが間違っていると誤って考えてしまいがちでした)。しかし実際には、その使い方は驚くほど簡単です。一文だけで十分です。コード内の「else」ブロックは、ループに中断がない場合にのみ実行されます。

ちょっと単純すぎて真実ではないように思えませんか?例を見てみましょう:

leaders = ["Elon", "Tim", "Warren"]
for i in leaders:
 if i == "Yang":
 print("Yang is a leader!")
 break
else:
 print("Not found Yang!")
# Not found Yang!
ログイン後にコピー

上に示したように: 上に示したように、リーダー リストには「Yang」が含まれていないため、for ループには中断がありません。したがって、「else」ブロックが実行され、情報が出力されます。

リーダーリストに「陽」が含まれている場合はどうなりますか?

leaders = ["Yang", "Elon", "Tim", "Warren"]
for i in leaders:
 if i == "Yang":
 print("Yang is a leader!")
 break
else:
 print("Not found Yang!")
# Yang is a leader!
ログイン後にコピー

上に示したように、リーダー リストに「Yang」が含まれているため、for ループが中断され、「else」ブロックの内容は実行されません。

つまり、for-else 機能自体を理解することは難しくありませんが、それを正しく上手に使用することは難しくありません。以下に、for-else 機能が適した 3 つのシナリオを紹介します。

For-Else 関数を使用する 3 つのシナリオ

Python プログラムでは、必ずしも for-else 機能を使用する必要はありません。正直に言うと、これがなくても同じことができますが、これを使用するとコードがよりエレガントになります。

1. マークされていない要素を反復して検索する

リストを反復して特定の要素を見つけるのが、ループを使用する基本的なシナリオです。通常、ターゲット要素が見つかった場合、繰り返しを続けるのは意味が無く、ループから抜け出す必要があります。問題は、要素が見つかったかどうかをどうやって知るかということです。

従来の解決策は、「マーク」変数を定義し、特定の項目が見つかったときにそれを True に設定することです。

leaders = ["Yang", "Elon", "Tim", "Warren"]
have_yang = False
for i in leaders:
 if i == "Yang":
 have_yang = True
 # Do something
 break
if have_yang == False: # no yang
 ...# Do others
ログイン後にコピー

上の例に示すように、have_yang 変数はフラグです。 for ループが完了した後、その値が False であれば、「Yang」がリストにないことがわかり、他の操作を行うことができます。

この方法でも十分ですが、Python の「エレガントな」機能を活用したい場合は、for-else を使用することもできます。

leaders = ["Yang", "Elon", "Tim", "Warren"]
for i in leaders:
 if i == "Yang":
 have_yang = True
 # Do something
 break
else:# no yang
 ...# Do others
ログイン後にコピー

この書き方は次のようになります。すっきり見えますよね?

2. ネストされたループから抜け出すために使用されます

For-else は、コード内にネストされたループがある場合にも役立ちます。

for i in range(5):
 for j in range(5):
 if j == 2 and i == 0:
 break
 if not (j == 2 and i == 0):
 continue
break
ログイン後にコピー

上で示したように、内側のループが抜けているかどうかを知る必要があるため、入れ子になったループから抜け出すのは少し困難です。

上記のコードは、内部ループが中断されたかどうかを判断するためのぎこちない解決策を示しています。確かに正常に動作しますが、for-else を使用することでよりきれいにできます:

# use the for-else syntax
for i in range(5):
 for j in range(5):
 if j == 2 and i == 0:
 break
 else:# only execute when it's no break in the inner loop
 continue
 break
ログイン後にコピー

3. 例外の処理を支援します

nums = [1, 3, 0, 5]
for denominator in nums:
 try:
 20/denominator
 except ZeroDivisionError:
 break
else:# no found ZeroDivisionError
 ...# Do others
ログイン後にコピー

上記のように、for ループ内の場合はいいえZeroDivisionError が発生すると、「else」ブロックで対応する後続の操作を実行できます。

概要

Python の for-else 機能は最初は少し奇妙に思えるかもしれませんが、その使用法を理解するのは難しくなく、特定のシナリオで使用できます。その有用性。結局のところ、覚えておくべきルールは 1 つだけです。「else」ブロックは、ループに中断がない場合にのみ実行されるということです。

以上がFor-else: Python の奇妙だが便利な機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!