python_学习笔记0824
2015-08-24 19:40
507 查看
今天是二零一伍年八月二十四日,今天主要是先回顾一下原来我们老师所谓的神奇的python函数,然后在学习一下新的python知识点。
1、python作为高级的动态语言,其中删去了很多原来静态语言里本不需要的规矩,提供了很多便利的函数,比如reduce函数:
结果是:
15
我们给我们的reduce函数传入了这样几个参数:第一、二元加法函数add();第二、一个包含多个内容的对象list;第三、一个初始值。那么reduce函数是做什么的呢,说白了,就是二元遍历。就是把我们传入reduce的那个对象,一个一个取出,按照add的方式,以init_val作为初始值,迭代出一个结果。在3.4以后,这个函数被放在了functools里面。
说完了reduce,介绍它的一个兄弟,叫做map。顾名思义,这个函数就是用来映射的。比如:
结果是:
[2, 3, 4, 5, 6]
我定义了一个一元函数,叫做add_one,放在map里,于是map函数对list对象里的每一个元素都做出了映射,此时的list仿佛就成了我的一个定义域,而我的add_one就成了一种映射方法。当然,生成的对象是一个map对象,我们需要转换一下。而且别忘记我们还有三元映射:
我们还要介绍最后一个兄弟,叫做filter,相信大家对这个一定不陌生了:
结果是:
[2,4]
结果相信大家也知道了,就是返还参数函数返还true的内容。其实从一个意义上来说,也是一种映射,只不过我们还有一个筛选的功能。看了这么多函数,我们再来一个便捷函数,lambda。说白了,这个函数就是一个快捷定义函数的方法。
我们还可以以上面的一个文件作为例子:
lambda后面紧跟的就是我们需要的参数,而冒号后面就是我们的return。lambda这个句柄对我们往后书写简单的函数提供极大的便利。
2、上次我们说道有一个items函数,可以让我们遍历dict里面的key,value两个内容。当然要是想只遍历value,也可以使用dict.value()函数。
3、想要生成一个列表可以有很多方便的方法:
这像我们刚才所说的映射的模式,写列表生成式时,把要生成的元素表达式x * x放到前面,后面跟for循环,就可以把list创建出来。当然我们还可以使用双元来进行遍历。
细心的人可以发现,在列表生成式里面,如果有两个for循环,它的结构变化成c语言是这样:
当然,除了一味的循环,我们还可以添加一些if判断,比如
我们甚至在其中还可以调用一个函数:
1、python作为高级的动态语言,其中删去了很多原来静态语言里本不需要的规矩,提供了很多便利的函数,比如reduce函数:
# reduce.py from functools import reduce def add(x , y ): return x + y l = [ 1 , 2 , 3 , 4 , 5 ] init_val = 0 ; print( reduce( add , l , init_val) )
结果是:
15
我们给我们的reduce函数传入了这样几个参数:第一、二元加法函数add();第二、一个包含多个内容的对象list;第三、一个初始值。那么reduce函数是做什么的呢,说白了,就是二元遍历。就是把我们传入reduce的那个对象,一个一个取出,按照add的方式,以init_val作为初始值,迭代出一个结果。在3.4以后,这个函数被放在了functools里面。
说完了reduce,介绍它的一个兄弟,叫做map。顾名思义,这个函数就是用来映射的。比如:
# map.py def add_one(x): return x + 1 l = [ 1 , 2 , 3 , 4 , 5 ] print( list(map( add_one , l)) )
结果是:
[2, 3, 4, 5, 6]
我定义了一个一元函数,叫做add_one,放在map里,于是map函数对list对象里的每一个元素都做出了映射,此时的list仿佛就成了我的一个定义域,而我的add_one就成了一种映射方法。当然,生成的对象是一个map对象,我们需要转换一下。而且别忘记我们还有三元映射:
>>> def add(x, y): return x+y >>> map(add, range(8), range(8)) [0, 2, 4, 6, 8, 10, 12, 14]
我们还要介绍最后一个兄弟,叫做filter,相信大家对这个一定不陌生了:
# filter.py def isEven(x): return x % 2 == 0 l = [ 1 , 2 , 3 , 4 , 5 ] print( list(filter( isEven , l) ) )
结果是:
[2,4]
结果相信大家也知道了,就是返还参数函数返还true的内容。其实从一个意义上来说,也是一种映射,只不过我们还有一个筛选的功能。看了这么多函数,我们再来一个便捷函数,lambda。说白了,这个函数就是一个快捷定义函数的方法。
>>> g = lambda x : x * 2 >>> g(3) 6 >>> (lambda x : x * 2)(3) 6
我们还可以以上面的一个文件作为例子:
# reduce.py from functools import reduce l = [ 1 , 2 , 3 , 4 , 5 ] init_val = 0 ; print( reduce( lambda x , y : x + y , l , init_val) )
lambda后面紧跟的就是我们需要的参数,而冒号后面就是我们的return。lambda这个句柄对我们往后书写简单的函数提供极大的便利。
2、上次我们说道有一个items函数,可以让我们遍历dict里面的key,value两个内容。当然要是想只遍历value,也可以使用dict.value()函数。
3、想要生成一个列表可以有很多方便的方法:
>>> [x + 1 for x in range(1,11)] [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
这像我们刚才所说的映射的模式,写列表生成式时,把要生成的元素表达式x * x放到前面,后面跟for循环,就可以把list创建出来。当然我们还可以使用双元来进行遍历。
>>> [x + m for x in range(1,5) for m in range(1,3)] [2, 3, 3, 4, 4, 5, 5, 6]
细心的人可以发现,在列表生成式里面,如果有两个for循环,它的结构变化成c语言是这样:
for(int x = 1 ; x < 5 ;x ++ ){ for(int m = 1 ; m < 5 ; m ++){ //your code } }
当然,除了一味的循环,我们还可以添加一些if判断,比如
>>> [x + m for x in range(1,5) for m in range(1,3) if x % 2 == 0 ] [3, 4, 5, 6]
我们甚至在其中还可以调用一个函数:
>>> L = ['Hello', 'World', 'IBM', 'Apple'] >>> [s.lower() for s in L] ['hello', 'world', 'ibm', 'apple']
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法