私は同意します、それは「elif not [condition(s)raise break]」のようなものです。
私はこれが古いスレッドであることを知っていますが、私は今、同じ質問を調べています。私が理解している方法でこの質問に対する答えを誰かが捕らえたとは思いません。
私にとっては、「読み」の三つの方法があるelse中でFor... else、またはWhile... else同等であるすべてのそれらの文は、以下のとおりです。
else == if the loop completes normally (without a break or error) 
else == if the loop does not encounter a break 
else == else not (condition raising break) (おそらくそのような条件があるか、ループがありません) 
したがって、本質的に、ループ内の「else」は実際には「elif ...」であり、「...」は(1)ブレークなし、(2)NOT [条件を上げるブレーク]と同等です。
重要なのはelse、「ブレイク」がなければ意味がないため、次のものがfor...else含まれるということです。
for:
    do stuff
    conditional break # implied by else
else not break:
    do more stuff
したがって、for...elseループの重要な要素は次のとおりです。それらをわかりやすい英語で読むと次のようになります。
for:
    do stuff
    condition:
        break
else: # read as "else not break" or "else not condition"
    do more stuff
他のポスターが述べたように、ループが探しているものを見つけることができる場合、一般的にブレークが発生するため、else:は「ターゲットアイテムが見つからない場合の対処法」になります。
例
例外処理、ブレーク、およびforループをすべて一緒に使用することもできます。
for x in range(0,3):
    print("x: {}".format(x))
    if x == 2:
        try:
            raise AssertionError("ASSERTION ERROR: x is {}".format(x))
        except:
            print(AssertionError("ASSERTION ERROR: x is {}".format(x)))
            break
else:
    print("X loop complete without error")
結果
x: 0
x: 1
x: 2
ASSERTION ERROR: x is 2
----------
# loop not completed (hit break), so else didn't run
例
ブレイクがヒットした簡単な例。
for y in range(0,3):
    print("y: {}".format(y))
    if y == 2: # will be executed
        print("BREAK: y is {}\n----------".format(y))
        break
else: # not executed because break is hit
    print("y_loop completed without break----------\n")
結果
y: 0
y: 1
y: 2
BREAK: y is 2
----------
# loop not completed (hit break), so else didn't run
例
ブレークがなく、ブレークを発生させる条件がなく、エラーが発生しない単純な例。
for z in range(0,3):
     print("z: {}".format(z))
     if z == 4: # will not be executed
         print("BREAK: z is {}\n".format(y))
         break
     if z == 4: # will not be executed
         raise AssertionError("ASSERTION ERROR: x is {}".format(x))
else:
     print("z_loop complete without break or error\n----------\n")
結果
z: 0
z: 1
z: 2
z_loop complete without break or error
----------