美文网首页
生成器、迭代器

生成器、迭代器

作者: 想吃鸡排饭 | 来源:发表于2018-10-29 21:35 被阅读0次

生成器generator

本着节约的原则,在使用列表元素时,按照某种算法,不断的推演出后续的算法,不必创建完整的列表浪费空间。

  1. 方法一:类似于列表生成式,只是把[ ]变为(),利用for循环可以输出该生成器的后续元素
g = (x * x for x in range(10))
for x in g:
  print(x)
  1. 方法二:如果一个函数包含yield关键字,则它是一个generator.在每次调用next()方法时,遇到yield时语句返回,再次执行时从上次的field语句处继续执行。
def gen():
    print('first step')
    yield 1
    print('second step')
    yield (2)
    print('third step')
    yield (3)
g=gen();
next(g)
#输出为    first step
for n in gen():
    print(n)
#输出结果:
# first step
# 1
# second step
# 2
# third step
# 3

  • 练习:打印出杨辉三角
def triangles():
   l=[1]
   while True:
       yield l;
       l=[l[x]+l[x+1]for x in range(len(l)-1)];
       l.insert(0,1);
       l.append(1)
n=0
for t in triangles():
   print(t)
   n=n+1
   if n==10:
       break

迭代器

前几天学过使用 isinstance()判断一个对象是否是 Iterable 对象
今天再学习使用 isinstance()判断一个对象是否是 Iterator 对象


生成器都是 Iterator 对象,但 list、dict、str 虽然是 Iterable,却不是Iterator。

from collections import Iterator
print(isinstance((x for x in range(10)), Iterator))#输出为True
print(isinstance('123',Iterator))#输出为False

可以使用 iter()函数 把 list、dict、str 等 Iterable 变成 Iterator

from collections import Iterator
print(isinstance(iter([]), Iterator))#输出为True
print(isinstance(iter('abc'), Iterator) )#输出为True

相关文章

  • 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/jabitqtx.html