2017-05-23 15 views
2

は、私はPythonがelseループ機能を持っていることを知っている:ループブロックが(一度でも)実行されたかどうかを調べるために、変数よりも良い方法はありますか?

for item in items: 
    # loop block 
else: 
    # will execute if there is no exception or break in loop block 

そしてので、その機能のPythonでループについて他のスマートなものがあるかどうか、私は疑問に思います。そして、今の私は、ループブロックが(一度も)実行された場合には見つけること(変数によるよりも)より良い方法を見つけたい:

items = [] 
for item in items: 
    # loop block 

if #loop block was executed: 
    print("Big brother is watching you!") 
+3

あなたは、いくつかのコンテキストを与えることができます。これで解決しようとしている問題は何ですか? – jonrsharpe

+0

リストタイプのオブジェクトの場合は、ループの後に 'if items:'をチェックすることができますが、 'items'が例えば'ジェネレータ。 –

+2

'run_loop = True'のようにループ内にフラグを設定すると何が問題になりますか? –

答えて

1

itemがどこにも定義されていない場合itemがある場合は、あなただけチェックできます割り当てられている:

items = [] 
for item in items: 
    pass 
try: 
    del(item) 
    print("loop was executed") 
except NameError: 
    print("loop wasn't executed") 

itemsが空の場合はそう、ループが実行されていないので、itemが定義されていない、あなたは例外を取得します。

del(item)コールでは、このコードを2回実行するとitemが存在しないことが保証されます。

(OK別の変数を使用していないが、それは:)まだovercomplexです)

+0

良い答えが、変数を使用するよりも複雑です。 – egvo

+1

@egvo:私は完全に同意しますが、あなたはそれを求めました:) –

1
items = [] 
for item in items: 
    # loop block 

if items: 
    print("Big brother is watching you!") 
+1

(空の)発電機のリストではなく、動作します。 –

関連する問題