2017-01-06 15 views
2

https://stackoverflow.com/a/17246413/2687324として、all()およびany()の短絡。評価の順序は保証されていますか?リンクの答えから例を使用してall()とany()は常に短絡していますか?

>>> def test(): 
...  yield True 
...  print('one') 
...  yield False 
...  print('two') 
...  yield True 
...  print('three') 
... 
>>> all(test()) 
one 
False 

は、結果は常にoneFalseでしょうか? python documentationによると

+2

iterableをiterableの順に繰り返します。 iterableの反復可能な順序が安定している場合、 'all' /' any'も安定しています。 – deceze

+0

@deceze簡単な質問:不安定な反復可能な外観はどうですか? – Quirk

+1

'random'関数を使った反復可能性はありますか? –

答えて

4

全て(反復可能)

戻り真のiterableの全ての要素に該当する場合(または反復可能が空の場合)。相当:

def all(iterable): 
    for element in iterable: 
     if not element: 
      return False 
    return True 

ように、あなたのiterableの順序が安定している場合答えは、イエスであるコメントで述べています。

関連する問題