生成器
列表生成器(简便:不需要多行代码)
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)
越是困难的事越要立即去做,这样收益才会最大!!!