做网站如何快速推广一款产品,网站域名在哪里备案,竞价推广的企业,阿里巴巴网络营销方式前言#xff1a;
我们来了解一下什么是python中生成器。了解一下python生成器是什么#xff0c;以及生成器在python编程之中能起到什么样的作用。
定义#xff1a;
生成器和迭代器
通过列表生成式#xff0c;我们可以直接创建一个列表。但是#xff0c;受到内存限制#…前言
我们来了解一下什么是python中生成器。了解一下python生成器是什么以及生成器在python编程之中能起到什么样的作用。
定义
生成器和迭代器
通过列表生成式我们可以直接创建一个列表。但是受到内存限制列表容量肯定是有限的。而且创建一个包含100万个元素的列表不仅占用很大的存储空间如果我们仅仅需要访问前面几个元素那后面绝大多数元素占用的空间都白白浪费了。
所以如果列表元素可以按照某种算法推算出来那我们是否可以在循环的过程中不断推算出后续的元素呢这样就不必创建完整的list从而节省大量的空间。在Python中这种一边循环一边计算的机制称为生成器generator。
要创建一个generator有很多种方法。第一种方法很简单只要把一个列表生成式的[]改成()就创建了一个generatorL [x * x for x in range(10)]L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] g (x * x for x in range(10))g at 0x1022ef630
在上面的例子中(x * x for x in range(10))是生成器g是迭代器。
因为生成器是能够返回一个迭代器的函数其最大的作用是将输入对象返回为一个迭代器
生成器是个函数迭代器是个对象在python3.5中range(5)是一个生成器返回的结果是一个对象即 at 0x1022ef630就是一个迭代器
我们创建了一个generator后通过for循环来迭代它并且不需要关心StopIteration的错误。
g (x * x for x in range(10))for i ing:
print(i)
运行结果
0
1
4
9
16
25
36
49
64
81
或者我们可以通过__next__()从生成器中取值
g (x * x for x in range(10))
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
运行结果
0
1
4
9
generator非常强大。如果推算的算法比较复杂用类似列表生成式的for循环无法实现的时候还可以用函数来实现。
创建迭代器
A、使用内建的工厂函数iter(iterable)可以将可迭代序列转换为迭代器
a[1,2,3,4]
b(1,2,3)
strTomwenxingprint(iter(a))
print(iter(b))
print(iter(str))