Python 第五天
函数式编程
高阶函数
1.变量可指向函数
func = abs
print(func(-1)) #1
2.函数可以作为参数传入另外的函数这也就是高阶函数
def add(x,y,func):
print(func(x) + func(y))
arr1,arr2 = (1,2),(2,3)
add(arr1,arr2,list) #[1,2,2,3]
map() 与 reduce()
1.map() 函数接收两个参数,一个函数,一个 Iterable ,map() 函数会将函数作用于 Iterable 并把结果作为新的 Iterable 返回
def func(x):
return x * x
ita = [1,2,3,4,5,6]
print(list(map(func,ita)))
2.reduce() 函数接收两个参数,一个至少有两个参数的函数,一个序列。reduce() 函数会把结果和序列的下一个元素做积累计算。reduce() 函数需要从 functools 模块进行引用
from functools import reduce
def f(x,y):
return 10 * x + y
def char2num(s):
return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]
r = reduce(f,map(char2num,'13547'))
print(r)
filter()
filter() 函数接收两个参数,一个函数,一个序列。filter() 把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
def is_odd(x):
return x and x.strip()print(list(filter(is_odd,['0','',none,'A'])))
sorted()
sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。它接收两个参数,一个序列,一个可选参数 key 函数作为排序参数依据
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_score(L):
return sorted(L,key=lambda L: L[1])print(by_score(L))
返回函数
函数可以作为函数返回值
from functools import reduce
def sun_in(L):
def a(x,y):
return x + y
def sum():
print(reduce(a,L))
return sumfunc = sun_in(list(range(0,11)))
func()
闭包问题
再创建一个函数,用该函数的参数绑定循环变量当前的值,可以解决闭包问题def count():
fs = []
def f(j):
def g():
return j**2
return gfor i in range(0,3):
fs.append(f(i)) return fs
f1,f2,f3 = count()
print(f1(),f2(),f3())
匿名函数
匿名函数 lambda x:x * x
print(list(map(lambda f : f**3 , [1,2,3])))
装饰器
在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
import functools
def log(text):
def decorator(func):
@functools.wraps(func)
def wraaper(*args,**kw):
print('%s %s()' % (text,func.__name__))
return func(*args,**kw)
return wraaper
return decorator
@log('调用')
def pr(text):
print(text)
pr(input('请输入随便什么东西:'))
偏函数
functools.partial可以帮助我们返回新的偏函数,即把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
import functools
def func(a,b,c=2):
print(a ** c + b ** c)
newfunc = functools.partial(func,c=1)
func(2,2) #8
newfunc(2,2) #4
Python 第五天的更多相关文章
- Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- Python(五)编程小实例
Python(五)编程小实例 抓取网页信息,并生成txt文件内容! Python抓取网页技能--Python抓取网页就是我们常看见的网络爬虫,我们今天所要用到的就是我们Python中自带的模块,用这些 ...
- 初学Python(五)——元组
初学Python(五)——元组 初学Python,主要整理一些学习到的知识点,这次是元组. #-*- coding:utf-8 -*- #定义元素 t = (1,2,3) #添加元素 #删除元素 #更 ...
- Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块
Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块 目录 Pycharm使用技巧( ...
- 简学Python第五章__模块介绍,常用内置模块
Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群 群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...
- 孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务
孤荷凌寒自学python第五十九天尝试使用python来读访问远端MongoDb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第五天.今天的感觉是,mongoDB数 ...
- 孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第四天.今天的感觉是,mongoDB数据 ...
- 孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库
孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第三天.感觉这个东西学习起来还是那么困 ...
- 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库
孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...
- 孤荷凌寒自学python第五十五天初识MongoDb数据库
孤荷凌寒自学python第五十五天第一天初识MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 大家好,2019年新年快乐! 本来我想的是借新年第一天开始,正式尝试学习爬虫,结果今天偶然发现 ...
随机推荐
- ActiveMQ 503错误
问题描述: 在Linux系统下安装ActiveMQ,启动服务 正常启动后,通过浏览器进行访问 可以正常显示home页面,但是点击其他菜单,如Queues,Topics等,都会出现503错误,如图 问题 ...
- WAMPServer多站点配置方法
WAMPServer多站点配置方法:1.在C:\wamp\www 新建文件夹test01,在里面新建index.php,内容为 "Hello Test01". 2.C:\wamp\ ...
- WinForm中AssemblyInfo.cs文件参数具体讲解
在.NET中有一个配置文件AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数,下面是默认的AssemblyInfo.cs文件的内容具体介绍 //是否符合公共语言规 ...
- [POJ2104/HDU2665]Kth Number-主席树-可持久化线段树
Problem Kth Number Solution 裸的主席树,模板题.但是求k大的时候需要非常注意,很多容易写错的地方.卡了好久.写到最后还给我来个卡空间. 具体做法参见主席树论文<可持久 ...
- Jersey +jetty 实现微服务(一)
微服务: 传输协议基本都是http,数据序列化,协议层目前protocol buffer,Json, xml,Java序列化,最多使用Json.实现以上二点并不难,spring 就可以,但spr ...
- JavaScript中的函数:闭包,this,高阶函数
一.函数基本理论 function compare(val1,val2){ return val1 - val2; }var result = compare(5,10); 1,函数的定义没什么意义, ...
- LCS 51Nod 1134 最长递增子序列
给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10. Input 第1行:1个 ...
- C++学习(七)入门篇——C++算数运算符
以下介绍5种C++基本运算符 +.-.×./.% 注意/为第一个数除以第二个数,结果为商的整数部分,小数部分被丢弃 %求模,两个操作数必须是整型,它生成第一个数除以第二个数的余数 如果其中一个是负数, ...
- 实验楼 1. k-近邻算法实现手写数字识别系统--《机器学习实战 》
首先看看一些关键词:K-NN算法,训练集,测试集,特征(空间),标签 举实验楼中的样例,通俗的讲讲K-NN算法:电影有两个分类(标签)-动作片-爱情片.两个特征--打斗场面--亲吻画面. 将那些数字和 ...
- .net 自动分类算法【原创】
目前自动分类算法是参考网上的思路和想法个人自主研发的. 当然互联网上有很多人采用不同的方式去解决自动分类问题,也有不同的算法和论文支持去做,但纵观自动分类这块工作是属于机器学习这块工作内容,总结出来比 ...