[python学习篇][廖雪峰][1]高级特性--创建生成器 方法1 a = (x for x in range(1,3)),,创建一个生成器的方法
[python学习篇][廖雪峰][1]高级特性--创建生成器 方法1 a = (x for x in range(1,3)),,创建一个生成器的方法
创建一个生成器的方法:
for x in range(1,10000000) ,先生成一个列表[1........9999999] 如果我们只想要后面的几个元素,会发现浪费很多空间。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。
要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:
>>> L = [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<generator object <genexpr> at 0x104feab40>
如何获取generator的元素,可以通过next(),就计算出下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。
>>> a = (x for x in range(1,4))>>> print type(a)<type ‘generator‘>>>> a.next()1>>> a.next()2>>> a.next()3>>> a.next()Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration>>>
另外一种方法是: for循环
>>> a = (x for x in range(1,4))>>> for x in a:print x...123>>>
[python学习篇][廖雪峰][1]高级特性--创建生成器 方法1 a = (x for x in range(1,3))
相关内容
- python you-get 下载视频,,pip instal
- Python 3.5新特性都有些什么,,9月13日,期待已久
- python 实现下标循环,,Python内置的e
- Python中,关于@property装饰器,,1.为什么使用@pr
- 用Python将绝对URL替换成相对URL的代码,,下面的内容内容
- python字典无限遍历,,#无限遍历dict,
- 关于python3.6.3 与python2.7.14使用for循环便利时遇到in ran
- Python图像处理(6):分离土壤与植物,,快乐虾http://
- Python2.7.3 Tkinter Entry(文本框) 说明,,Python学习记录
- Python实现进度条的4种方式,,这里只列举了部分方法
评论关闭