内置函数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
其他类似的内置插件也是如此。有没有简单的方法来解决它?(由于占用空间,将生成器表达式转换为元组或列表并不是一个真正的选择。)