python学习总结

文章目录

生成器

生成器,用术语来说是生成器(generator)和带yield的generator function.

但在介绍生成器之前,先来认识一下迭代器(iterator),迭代器表示的是一个数据流,通过被 next(iterator) 调用获取下一个数据,因为我们并不知道这个数据流的长度,于是只有通过不断地调用 next() 函数获取数据,直到抛出 StopIteration 异常。

迭代器的应用常见于循环的控制条件语句中,例如:

for element in list: 
        pass

上面的代码中的 list 会从一个列表数据结构(列表是可迭代的,但和迭代器的区别是,没有 next() 方法(iterable 和 iterator 的区别))转变为迭代器(iterator),也就是说在执行for element in list: 的代码时,实际上执行了 it = iter(list):代码,用一个迭代器 it 代表了原列表中数据的流。(并且,在for 中使用迭代器不会抛出异常,原因是 for 隐藏了try…except 的细节)具体的转换类似于这样:

it = iter(list)
while True:
       try:
           it.next()
       except StopIteration:
           break

于是以上就是对迭代器的简单介绍。

生成器:

  1. 函数加yield,可以参考廖教程的实现杨辉三角函数。代码如下
# 每次执行到yield时暂停,然后再次调用时继续。
def myfunc():
	list = [1]   
	while True:       
	    yield(list)      
	    length = len(list)       
	    if length == 1:           
	        list = [1, 1]       
	    ls = [1]      
	    j = 0       
	    while j <= length-2:
	        ls.append(list[j]+list[j+1])
	        j += 1       
	    ls.append(1)       
	    list = ls
  1. generator
# 用小括号则是生成器表达式
g = (i for i in range(10))
# 用中括号则是列表表达式
l = [i for i in range(10)]

Ps. 生成器与迭代器的区别:生成器保存的是生成下一个数据的方法,迭代器是每次取一个数据。


map函数

map函数返回的也是 generator, map函数把一个函数映射在列表里的每个值上。他的参数里有函数,所以也就是高阶函数。

并且因为返回的是一个generator,所以常用list() 包裹上使得返回列表。


to be continued…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值