python 生成器与迭代器

在Python中, ⼀边循环⼀边计算的机制, 称为⽣成器: generator

创建生成器: G = ( x*2 for x in range(5))

可以通过 next() 函数获得⽣成器的下⼀个返回值

没有更多的元素时, 抛出 StopIteration 的异常

生成器也可以使⽤ for 循环,因为⽣成器也是可迭代对象

 

创建生成器的另外一种方法:

def fib(times): #斐波拉契数列(Fibonacci

  n = 0

  a,b = 0,1

  while n<times:

    yield b

    a,b = b,a+b

    n+=1

  return 'done'

 

使⽤ __next__() ⽅法

使⽤send() 方法 (第一次不能使用,使用前先调用next)

next()等价于send(None)

def gen():

i = 0

while i<5:

temp = yield i #接收send传入的参数

print(temp)

i+=1

⽣成器的特点:

1. 节约内存

2. 迭代到下⼀次的调⽤时, 所使⽤的参数都是第⼀次所保留下的

 

迭代是访问集合元素的⼀种⽅式。 迭代器是⼀个可以记住遍历的位置的对象 。迭代器只能往前不会后退

可迭代对象(Iterable)

集合数据类型, 如 list 、 tuple 、 dict 、 set 、 str 等

⽣成器和带 yield 的generator function

如何判断对象可迭代?

from collections import Iterable

isinstance([], Iterable)

迭代器(Iterator):可以被next()函数调⽤并不断返回下⼀个值的对象称为迭代器

from collections import Iterator

isinstance((x for x in range(10)), Iterator)

iter()函数 :将可迭代对象转换成迭代器

 

posted @ 2019-03-24 18:21  一念之间的抉择  阅读(198)  评论(0编辑  收藏  举报