美文网首页web服务器
生成器、迭代器

生成器、迭代器

作者: GHope | 来源:发表于2018-12-05 00:21 被阅读107次

生成器

  • 生成器表达式:(x ** 2 for x in range(1, 11))
  • yield关键字

迭代器

  • __iter__:返回迭代器对象
  • __next__:取下一个迭代值

斐波那契数列和求素数的生成器和迭代器的实现

from math import sqrt


def is_prime(num):
    """判断是不是素数"""
    for factor in range(2, int(sqrt(num)) + 1):
        if num % factor == 0:
            return False
    return True


def prime(num):
    """素数生成器"""
    for val in range(2, num + 1):
        if is_prime(val):
            yield val


class Prime(object):
    """素数迭代器"""
    def __init__(self, number):
        self.number = number
        self.idx = 1

    def __iter__(self):
        return self

    def __next__(self):

        if self.idx < self.number:
            self.idx += 1
            if is_prime(self.idx):
                return self.idx
            return self.__next__()
        raise StopIteration()


class Fib(object):
    """斐波拉切数迭代器"""

    def __init__(self, num):
        self.num = num
        self.a, self.b = 0, 1
        self.idx = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.idx < self.num:
            self.a, self.b = self.b, self.a + self.b
            self.idx += 1
            return self.a
        raise StopIteration()


def fib(num):
    """斐波拉切数生成器"""
    a, b = 0, 1
    for _ in range(num):
        a, b = b, a + b
        yield a


def main():
    """主函数"""
    print('fibonacci number'.center(80, '-'))
    for val in Fib(20):
        print(val, end=' ')
    print('\n', '-' * 80, sep='')
    print('prime number'.center(80, '-'))
    for val in prime(100):
        print(val, end=' ')
    print('\n', '-' * 80, sep='')


if __name__ == '__main__':
    main()

相关文章

  • 2019-03-20

    1 迭代器和生成器 迭代器 获取数据:next (迭代器)、for 循环遍历 ,数据来源:转换、生成器 生成器:...

  • yield and Iterator

    Generator(生成器) 生成器是特殊的迭代器,迭代器不一定是生成器。 生成器与迭代器均是可迭代对象。 目前学...

  • 14. Python之迭代器(iterator)和生成器(gen

    1 什么是迭代器 2 为何要有迭代器 3 如何用迭代器 4 生成器 生成器应用案例

  • 第014篇:三大神器之生成器

    Python的三大神器:装饰器、迭代器、生成器 1、生成器 1.1、什么是生成器 生成器就是迭代器的一种;生成器作...

  • ES6 ES7 语法特性与规范

    生成器函数 说生成器之前先讲迭代器,下面就是迭代器的简单范例,迭代器代表一个流程,迭代器的每次next()调用,会...

  • Python基础-16生成器-迭代器

    16.生成器-迭代器     可循环迭代的对象称为可迭代对象,迭代器和生成器函数是可迭代对象,在Python中提供...

  • 迭代器

    可迭代对象(Iterable): for迭代器(Iterator): for + next生成器属于迭代器。 验...

  • Python :生成器、迭代器、装饰器、递归函数与正则表达式

    Python 第四篇:生成器、迭代器、装饰器、递归函数与正则表达式 Python迭代器和生成器 Python 迭代...

  • Python生成器

    1 生成器概念 生成器是一个特殊的迭代器(迭代器的抽象层级更高)所以,生成器拥有迭代器的特性:1.惰性计算,节省内...

  • 协程,生成器,迭代器

    高频率切换 迭代器 自定义迭代器 生成器 特殊的迭代器

网友评论

    本文标题:生成器、迭代器

    本文链接:https://www.haomeiwen.com/subject/vgbzqqtx.html