可控自增数字生成器

目的:想要一个自增生成页码的生成器,但是一开始未必知道总页数。

方法:自定义一个生成器里,生成器内一开始使用 itertools.count 循环 yield 出自增数字。在得到总页数后,结束 itertools.count 的循环,并定义一个以当前数字和总数为范围的 range ,循环 yield 出 range 生成的数字直到结束。

from itertools import count

def pageGenerator(start):
    counter = count(start)
    while total == 0:
        yield next(counter)
    ranger = iter(range(next(counter), total_page() + 1))
    for page in ranger:
        yield page

* total 为全局变量,如果有需要,可以改为指针参数输入。如 def pageGenerator(start, *total) 。

        这个方法看起来并不比直接用 itertools.count 生成后判断省资源,看起来也更复杂。但是在项目中,如果有个地方需要根据不同的情况,使用不同的迭代器、生成器进行循环的时候,这种方式至少可以让你不需要在外部循环的时候,还要考虑在不同的情况进行不同的处理。只需要根据不同的情况扔给它不同的迭代器、生成器,至于需要循环哪些内容,让这些迭代器、生成器自己去处理就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值