生成器

列表生成器(简便:不需要多行代码)

a = [i+1 for i in range(10)]
print(a)



a = [i if i<5 else i*i for i in range(10)]
print(a)

generator  生成器  

特点:1.想要生成器里的元素不会立即产生,需要取一次才能创建一次。2.只能往前走,不能往后退。3.生成器生产完毕,继续下去会报错。

a = (i for i in range(100))    #首先得生成一个不能执行循环的对象。也就是生成器。
print(next(a))      0
print(next(a))    1
print(next(a))    2
print(next(a))    3
print(next(a))    4
print(next(a))    5

 生成器循环

a = (i for i in range(10))
# for n in a:
#     print(n)
while True:
    next(a)   #会自动报错,因为生成到最后没有值。

python3里的range 实质上是一个生成器

>>> range(100)
range(0, 100)

python2里的range

range(100)
[0,1,2,3,4,5,...,99]    #会直接生成列表
xrange(100)             #和python3里的range差不多,也是一个生成器。
(100)

  

 

 

 

原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8625505.html