前言

  函数式编程不用变量保存状态,不改变变量

   内置函数


高阶函数

  • 把函数当作参数传给另一个对象
  • 返回值中包含函数

 使用的场景演示:

num_test = [1,2,10,5,8,7]

 客户说 :对上述列表中的每个值都进行平方操作

  我说:这个简单。

 方案一:

ret=[]
for i in num_test:
ret.append(i**2) print(ret)

  客户说 :我这几万个列表,都给我来一次上面的操作

  我说:.......这个没问题

多个列表,为了避免写重复代码,应该封装在一个函数里,因此

 方案二:

def num_t(array):
ret=[]
for i in num_test:
ret.append(i**2)
return ret

   客户说:又来几万个列表,给我每个值都给我自增1

我想 :......mmp,这货没完了,要是以后又这么不靠谱,又来啥需求的,得有个最终方案了

    单独写功能函数,在将功能封装到函数里

 方案三:

def reduce_one(x):
return x-1 def mult_two(x):
return x**2 def num_t(func,array):
ret=[]
for i in num_test:
res = func(i)#调用传入的方法
ret.append(res)
return ret print(reduce_one,num_test)

客户 :给你加薪啊!

方案四:(加入匿名函数)

def num_t(func,array):
ret=[]
for i in num_test:
res = func(i)#调用传入的方法
ret.append(res)
return ret print(num_t(lambda x:x*2,num_test))

 方案五:(map函数)

map(lambda x:x*2,num_test)

内置函数

   map()

msg='qweasdasdqwe'
map(lambda x:x.upper(),msg)
#转换大写

   fliter()

peop = ['chen','_liu','huan','_de']
filter(lambda n:not n.startswith('_'),peop)
#过滤第一个为"_"的字符串

  reduce()

from functools import reduce #导入模块
num_l=[1,2,3,100]
print(reduce(lambda x,y:x+y,num_l))
#合并操作

   all()   any()

all([1,2,0])#将所有的元素都做bool运算,只有全部为真,返回true
any([1,2,0])#将所有的元素都做bool运算,只有存在一个为真,返回true

   bin()   oct()   hex()

bin(456)#将整型转换成二进制
oct(456)#将整型转换成八进制
hex(456)#将整型转换成十六进制

 bytes()

bytes('你好',encoding='utf-8')#将字符串按照指定编码格式转换成二进制
bytes('你好',encoding='utf-8').decode('utf-8')#解码二进制

 chr()  ord()

chr(97)#返回ASCLL码的值,返回 a
ord('a')#返回在ASCLL码中的位置 返回 97

  divmod()

divmod(10,3)#返回10比3的商和余 比如(3,1) 对用于分页操作

 eval()

eval('10*2/(6-1)')#提取字符串中的数据结构,返回值为4.0

  hash():可hash的数据类型即不可变类型,不可hash的数据类型即可变类型

hash('chen')#根据hash算法返回一个值 数字签名

globals()   locals()

globals()#返回当前的全局变量
locals()#返回当前的局部变量

zip()

zip(('chen','liu','hua'),(1,2,3))
返回一个zip对象 [('a', 1), ('b', 2), ('c', 3)] dic = {'chen':21,'liu':23,'hua':30}
zip(dic.keys(),dic.values())
返回 [('chen', 21), ('liu', 23), ('hua', 30)] 注:传的两个参数只要为序列即可(字符串)
zip('abc','123')

  min()  max()

max()#取可迭代对象中最大的值
max(dic,lambda dic:dic['key'])#当传入一个字典,是可定义匿名函数,实现比较逻辑 min()#取可迭代对象中最小的值

   pow()

pow(3,3)#3**3
pow(3,3,2)#3**3%2

round()

round(3.2)#四舍五入操作

slice()

name='abcdefgh'
s1=slice(3,5)#定义切片规则
name[s1] s=slice(1,4,2)#定义切片和步长

sorted()

name = [
{'name': 'chen', 'age': 18},
{'name': 'yi', 'age': 16},
{'name': 'hua', 'age': 23},
{'name': 'gong', 'age': 25},
{'name': 'lu', 'age': 22}
]
sorted(name,key=lambda lis:lis['age'])#安装age来排序 name = {
'chen': 18,
'yi': 16,
'hua': 23,
'gong': 25,
'lu': 22
}
sorted(name, key=lambda key:name[key])#按照value来排序
sorted(zip(name.values(),name.keys()))#得到姓名和年龄

内置函数总览:

内置函数详情

python之路(4)高阶函数和python内置函数的更多相关文章

  1. python 函数 装饰器 内置函数

    函数 装饰器 内置函数 一.命名空间和作用域 二.装饰器 1.无参数 2.函数有参数 3.函数动态参数 4.装饰器参数 三.内置函数 salaries={ 'egon':3000, 'alex':10 ...

  2. python之三元表达式与生成式与匿名与内置函数(部分)

    目录 三元表达式 各种生成式 列表生成式(可同样作用于集合) 字典生成式 匿名函数 重要内置函数 map() zip() filter() reduce() 常见内置函数(部分) 三元表达式 三元表达 ...

  3. 生成器的send方法、递推函数、匿名函数及常用内置函数

    生成器的send方法 在使用yield方法创建生成器时,不仅可以使用next方法进行取值,还可以通过send方法向生成器的内部传值 什么是send方法? send方法相当于高级的next方法,send ...

  4. Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法

    知识回顾 常见五大数据类型分类小结:数字.字符串.列表.元组.字典 按存值个数区分:容器类型(列表.字典.元组) 标量原子(数字.字符串) 按是否可变区分:可变(列表.字典) 不可变(数字.字符串.元 ...

  5. Learn day5 迭代器\生成器\高阶函数\推导式\内置函数\模块(math.time)

    1.迭代器 # ### 迭代器 """能被next调用,并不断返回下一个值的对象""" """ 特征:迭代器会 ...

  6. python学习笔记(五):装饰器、生成器、内置函数、json

    一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...

  7. 【Python】从简单案列中揭示常用内置函数以及数据类型

    前面提到了BIF(内置函数)这个概念,什么是内置函数,就是python已经定义好的函数,不需要人为再自己定义,直接拿来就可以用的函数,那么都有哪些BIF呢? 可以在交互式界面(IDLE)输入这段代码, ...

  8. 人生苦短之我用Python篇(深浅拷贝、常用模块、内置函数)

    深浅拷贝 有时候,尤其是当你在处理可变对象时,你可能想要复制一个对象,然后对其做出一些改变而不希望影响原来的对象.这就是Python的copy所发挥作用的地方. 定义了当对你的类的实例调用copy.c ...

  9. Python学习(七)——匿名函数、map函数、filter函数、reduce函数与其他内置函数

    匿名函数 lambda x: x + 1 # lambda:定义匿名函数的关键字 # x:形参 # x+1:程序处理逻辑 fun = lambda x: x + 1 print(fun(5)) #6 ...

  10. Python基础学习笔记(八)常用字典内置函数和方法

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-dictionary.html 3. http://www.lia ...

随机推荐

  1. SQL SERVER-开启xp_cmdshell

    在sql server中执行cmd命令,报以下异常. EXEC master.sys.xp_cmdshell 'dir c:/' Msg 15281, Level 16, State 1, Proce ...

  2. UEditor1.2.6.0在.net环境下使用

    UEditor1.2.6.0 1.百度百科词条 2.UEditor官方网站 [CKEditor+CKFinder的配置实用,可查看博主另一篇文章] 第一次接触UEditor还是在2011年的下半年里, ...

  3. 应用wavesurfer.js绘制音频波形图小白极速上手总结

    一.简介 1.1  引   人生中第一份工作公司有语音识别业务,需要做一个web网页来整合语音引擎的标注结果和错误率等参数,并提供人工比对的语音标注功能(功能类似于TranscriberAG等),(博 ...

  4. 【转】Android Hook框架Xposed详解

    1 Introduction 1.1  概述 Xposed 是 GitHUB 上 rovo89 大大设计的一个针对 Android 平台的动态劫持项目,通过替换 /system/bin/app_pro ...

  5. Node.js如何执行cmd

    最近正好因业务的一个需求需要研究如何根据vscode的插件名来下载对应的插件以解决之前将插件打包上传到服务器上面导致的延迟问题(插件体积小还好说,如果体积过大,即便是压缩打成zip包,如果同一时刻很多 ...

  6. spring boot 打包war

    @SpringBootApplication public class AesApplication extends SpringBootServletInitializer { public sta ...

  7. 类Date

    概述: java.util.Date类 表示特定的瞬间,精确到毫秒.毫秒就是千分之一秒.继续查阅API,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对 ...

  8. ABP实践(1)-通过官方模板创建ASP.NET Core 2.x版本+vue.js单页面模板-启动运行项目

    1,打开ABP官网下载模板页面 2,根据下图选择对应的选项及输入项目名 注:上图验证码下方的选择框打钩表示下载最新稳定版,不打钩表示下载最新版本(有可能是预览版) 3,解压下载的压缩包 解压之后是个a ...

  9. P4145 上帝造题的七分钟2 / 花神游历各国(线段树区间开平方)

    有点意思,不需要什么懒标记之类的东西,因为一个数无论怎样开平方,最后取整的结果必然会是1,所以我们不妨用最大值来维护,若区间最大值不为1,就暴力修改,否则不用管. #include<bits/s ...

  10. nginx配置https双向验证(ca机构证书+自签证书)

    nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...