ホームページ  >  記事  >  バックエンド開発  >  For-else: Python の奇妙だが便利な機能

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

王林
王林転載
2023-04-13 20:43:011329ブラウズ

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 までご連絡ください。