組み込み関数all()は、次と同等であると想定されています。
def all(iterable):
for element in iterable:
if not element:
return False
return True
しかし、ジェネレータ式が に渡されるall()と、動作が異なります。
l=(1,2,3)
def all2(iterable):
for element in iterable:
if not element:
return False
return True
print all(e > 0 for e in l) # <generator object <genexpr> at 0x00000000096AB510>
print all2(e > 0 for e in l) # True
他の同様のビルトインについても同様です。それを修正する簡単な方法はありますか?(ジェネレータ式をタプルまたはリストに変換することは、フットプリントのため、実際にはオプションではありません。)