python 列表生成器放while_来自python的for / while循环是一个生成器

简答:不,但还有其他形式的发电机.

for / while循环是一个循环结构:它不发出值,因此不是生成器.

然而,还有其他方法来构建生成器.

例如,yield就是例如一个生成器:

def some_generator(xs):

for x in xs:

if x:

yield x

但也有生成器表达式,如:

(x for x in xs if x)

此外,在python-3.x中,范围(..),map(..),filter(..)构造也是生成器.

当然,您可以进行迭代(通过使用可迭代模式):

class some_generator(object):

def __init__(self, xs):

self.n = n

self.idx = 0

def __iter__(self):

return self

def __next__(self):

return self.next()

def next(self):

while self.num < len(self.xs) and not self.xs[self.num]:

self.num += 1

if self.num < len(self.xs):

res = self.xs[self.num]

self.num += 1

return res

else:

raise StopIteration()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值