列表生成式生成器迭代器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表生成式生成器迭代器相关的知识,希望对你有一定的参考价值。

一句话概念

列表生成式——可以直接在列表里进行运算

生成器——一边循环一边计算的机制,称为生成器:generator(就是生成一个不运行的函数或者列表,即数据流)

第二句:生成器与列表的区别——生成器你不知道长度,就是一个数据流;list、dict、str你知道长度

迭代器——可以被next()函数调用并不断返回下一个值的对象称为迭代器

第二句:可迭代对象——可以直接作用于for循环的对象统称为可迭代对象:Iterable

第三句:生成器一定是迭代器,迭代器不一定是生成器

 

列表生成式

data = [1,2,2,34]

data = [i*2 for i in  data]     #直接运算

data = [i*2 if i>3 else i-1 for i in data ]     #三元运算
print(data)

 

生成器

第一种方法,列表推到式
data = (x for x in range(10))       #用小括号表示
print(data) #此时只打印函数内存,
第二种复杂式方式
#斐波那契数列

def fob(num):
    a,b = 0,1
    count = 0
    while count < num:
        count += 1
        tmp = b     #也可以写成a,b=b,a+b
        b = a + b
        a = tmp
        yield a     #返回a, 同时挂起当前这个函数, a返回给了通过__next__()调用当前函数的人
        # return a
    else:print("done")

f = fob(1000000)

for i in range(10):
    print(f.__next__())

  

迭代器

>>> from collections import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance(‘abc‘, Iterator)
False

  

#list、dict、str虽然是Iterable,却不是Iterator。通过iter()函数,可以把list、dict、str等Iterable变成Iterator使用
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter(‘abc‘), Iterator)
True

  




 

以上是关于列表生成式生成器迭代器的主要内容,如果未能解决你的问题,请参考以下文章

函数式编程(列表生成式生成器迭代器)

Python高级用法总结--(列表推导式,迭代器,生成器,装饰器)

python迭代器,生成器,列表生产式

python 生成器和迭代器

列表生成式生成器迭代器

python 迭代器 生成器 列表推导式