迭代器和生成器

2019-03-06  本文已影响0人  数据小黑升值记

Python 中的可迭代数据类型有:list,dic,tuple,set,可以适用dir函数查看可调用的方法。

迭代器的好处:

生成器

生成器函数

def gen():
  for i in range(10):
      yield i
    
g=gen()

此时g是一个生成器,只有通过next方法调用后才会一个个返回值

含有yield关键字的函数都是生成器函数

生成器函数的特点

g=gen()
print(g)
b=g.__next__()
print(b)
c=g.__next__()
print(c)

执行上述代码,打印的结果如下:

 <generator object gen at 0x000001F8B681F5C8>
0
1

此时的g只是一个生成器,只有调用了next方法才会有返回值

如何从生成器中取值:

生成器表达式

    g=(i for i in range(10))
    d=[i for i in range(10)]
    print(g)
    print(d)

把圆括号变为方括号则变成了列表推导式,打印结果如下:

    <generator object <genexpr> at 0x0000021DFE8DF5C8>
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

列表推导式占用内存,推导式也可以添加条件筛选功能,如下:

    [i*i for i in (1,2,3,4) if i%3 == 0]
上一篇下一篇

猜你喜欢

热点阅读