生成许多不同项目的生成器

问题描述 投票:0回答:1

例如,包含许多不同项(函数,对象属性,值)的数组:

lst = [
 1,
 a(),
 obj.prop,
 ...

 z()
]

我想检查所有值都为True,所以我使用all()

all(lst)

但是在这种情况下,列表的所有值都是在创建列表时计算的。

目的是不计算列表初始化中的所有值,但“即时”计算它,并停止对列表中的第一个False项进行迭代(并计算)。因此,一种解决方案是从生成器产生每个值:

def gen():
 yield 1
 yield a()
 yield obj.prop
 ...

 yield z()

但是它不是干代码,并且重复使用yield关键字看起来很难看。还有其他更漂亮的解决方案吗?

python generator dry yield
1个回答
0
投票

仅在添加列表时使用简单的函数(即不是生成器)来创建列表呢?

def fun():
    return [ 1, a(), obj.prop, ... z() ]
...
all(fun())
© www.soinside.com 2019 - 2024. All rights reserved.