2

組み込み関数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

他の同様のビルトインについても同様です。それを修正する簡単な方法はありますか?(ジェネレータ式をタプルまたはリストに変換することは、フットプリントのため、実際にはオプションではありません。)

4

1 に答える 1