- 生成式和生成器
通过一句简洁的语法就可以对一组元素进行过滤,还可以对得到的元素进行转换处理。语法格式为:
[expfor val in collection if condition]
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。li = [x*x for x in xrange(1,101) if x%2==0] print (li) #生成式类似于函数 def funa(): a = [] for x in xrange(1,101): if x%2==0: a.append(x*x) return a print (funa())
要创建一个列表生成器generator,有很多种方法。第一种方法是把一个列表生成式的[]改成(),就创建了一个generator:
定义generator的另一种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。#列表生成器:方法1:将生成式的[]改成() a = (x*x for x in xrange(1,10) if x%2==0) print (a) print (type(a)) print (a.next()) print (a.next()) print (a.next()) print (a.next())
def fib(n, yelid=None): sum = 0 i = 0 while(i<n): sum = sum +i i+=1 yield sum for x in fib(10): print(x) print (fib(10))
- 迭代器
列表生成式:一次性生成所有的数据,然后保存在内存中,适合少量的数据
生成器返回一个可迭代的对象及generator对象,必须通过循环才可以一一取出所有的结果
可迭代的对象:通过循环调用出来的,就是可迭代的对象[] {} ()
迭代器 生成器 必须通过next()调用的,被next()调用并不断返回下一个值的对象称为迭代器。
python生成式和生成器
最新推荐文章于 2020-07-22 15:33:06 发布