python(内置高阶函数)
1.高阶函数介绍:
- 一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),如果满足其一,则为高阶函数。
- 常见的高阶函数:map()、sorted()、filter()等也是python内置的函数,也可以自定义高阶函数,其实装饰器也算一种高阶函数。
2.内置高阶函数:
(1)map(function,iterable) 函数
- function:接收一个函数
- iterable:接受一个可迭代对象(字符串,元组,列表,字典)
- 作用:可将迭代对象 __iter1 依次代入这个函数,然后将结果组成一个列表返回
"""
#将列表 a 中的元素全部转换成字符串
a = [1,2,3,4] b = map(str,a)
print(list(b))
""" """
#将下面stu列表中的姓氏进行首字母大写操作
stu = ["ZHAo","qIan","SUN","Li"]
#自定义首字母大写方法
def NameStyle(name):
return name[0].upper() + name[1:].lower()
#使用map()函数,传入参数为,自定义的函数NameStyle名称,和可迭代对象stu
stu2 = map(NameStyle,stu)
print(list(stu2))
"""
(2)filter(function,iterable) 函数
- function:接收一个函数
- iterable:接受一个可迭代对象
- 作用:将可迭代对象依次传入该函数,通过返回值是 True 或 False 决定去留(过滤或筛选)
"""
#找出列表 strs 中的所有字符串
strs = ["a","b","c",1,2]
def get_str(x):
if isinstance(x,str): #判断传入的元素 x 是否是 str 型
return True
new_strs = filter(get_str,strs)
print(list(new_strs))
""" """
#找出列表中http链接
http = ["http://www.baidu.com","apple","http://weibo.cn","中国人"]
def ht(param):
if param.startswith("http"):
return True all_http = filter(ht,http)
print(list(all_http))
"""
(3)sorted(iterable,key,reverse) 函数
- iterable:可迭代对象
- key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序
- reverse:排序规则,reverse = True 降序 , reverse = False 升序(默认)
- 返回值:返回重新排序的列表
"""
#根据成绩排序
grade = [("Tom",75),("Jerry",92),("Apple",66),("Ben",88)] def get_grade(x):
return x[1] print(sorted(grade,key=get_grade))
""" """
# 根据字符串长度排序
name = ["Tom","Jerry","Apple","Ben"] def len_name(x):
return len(x) print(sorted(name,key=len_name))
"""
3.嵌套函数
- 函数内部再进行定义函数成为嵌套函数
def foo():
msg = "China"
def fo():
return msg
return fo()
print(foo())
4.匿名函数
- 特点:
- 只能有一个表达式
- 匿名函数只有一个参数
- 匿名函数也是一个函数对象,可以赋值给一个变量
- 经常配合高阶函数使用
#计算出列表中所有值的平方
li = [1,2,3,4,5]
"""
#高阶函数用法
def foo(x):
return x * x
print(list(map(foo,li)))
"""
#匿名函数用法
"""
print(list(map(lambda x: x * x,li))) #第一个 x 为参数,x * x 为计算逻辑
"""
#匿名函数赋值给变量 f f = lambda x: x * x
print(f(2))
#求出 1-20 的所有奇数
J = list(filter(lambda x: x % 2 != 0,range(1,20)))
print(J)
python(内置高阶函数)的更多相关文章
- Python内置高阶函数map()
map()函数map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如,对于lis ...
- 匿名函数python内置高阶函数以及递归
匿名函数 python定义一个函数通常使用def关键词,后面跟函数名,然后是注释.代码块等. def func(): '''注释''' print('from func') 这样就在全局命名空间定义了 ...
- Python中匿名函数与内置高阶函数详解
大家好,从今天起早起Python将持续更新由小甜同学从 初学者的角度 学习Python的笔记,其特点就是全文大多由 新手易理解 的 代码与注释及动态演示 .刚入门的读者千万不要错过! 很多人学习pyt ...
- python面试_总结01_概念和内置高阶函数
- 简答题 1.请谈谈Python中is 和 == 的区别(代码演示) is用于比较两个变量是否引用了同一个内存地址,is表示的是对象标识符(object identity),作用是用来检查对象的标识 ...
- reduce内置高阶函数求和
>>> def f(x, y): ... return x+y ... >>> reduce(f, a, ) >>> reduce(lambda ...
- Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted
1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...
- Python中的高阶函数与匿名函数
Python中的高阶函数与匿名函数 高阶函数 高阶函数就是把函数当做参数传递的一种函数.其与C#中的委托有点相似,个人认为. def add(x,y,f): return f( x)+ f( y) p ...
- python字符串反转 高阶函数 @property与sorted(八)
(1)字符串反转 1倒序输出 s = 'abcde' print(s[::-1]) #输出: 'edcba' 2 列表reverse()操作 s = 'abcde' lt = list(s) lt.r ...
- Python入门篇-高阶函数
Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数 1>.First Class Object 函数在Python中是一等公民 函数也 ...
随机推荐
- (js描述的)数据结构[哈希表1.3](10)
1.哈希表的完善 1.容量质数(limit):需要恒为质数,来确保元素的均匀分布. 1)普通算法: 判断一个数是否为质数 function isPrime(num) { for (var i = 2; ...
- Google 浏览器 离线包下载方式
最近因工作需要,需要安装google浏览器,并且安装在系统固定目录,用360软件管理下载后发现默认安装在C:\Users\administrator\AppData\Local\Google\Chro ...
- AJ学IOS(01) UI之Hello World与加法计算器
不多说,AJ分享,必须精品 这两个一个是HelloWorld(左边) 另一个是 加法计算器(右边)的截图. 先运行第一个 程序看看效果 1.打开Xcode(没有哦mac系统的没有xcode的帮你们默哀 ...
- 【Tool】在Windows系统上,下载和安装当前最新版本的IDEA 2020-4-14
下载 & 安装 IDEA 下载部分: 官网地址:https://www.jetbrains.com/idea/ 直接点击鲜眼的DOWNLOAD 如果仅仅是想简单接触学习下Java语言,社区版的 ...
- sprint3总结 && sprint4计划
sprint3总结 在一周时间里,逻辑部分顺利的将数据库,查词,UI部分连接到一起.并且各部分也针对新的要求做出了一些修改,目前数据库和查词alpha版已经完成,UI部分还需要一些美化,逻辑部分也还需 ...
- 处理时间的类 —— System类、Date类 、SimpleDateFormat类 与 Calendar类
在我们以往的编程中,就有过通过运行前和运行后时间差来判断时间复杂度的例子,再扯得远一点,我们在C语言中制造随机数的操作,也要用到有关时间的函数.而且,在我们未来的编程中,也会时不时要用到能够读取当前时 ...
- 【题解】P4570 [BJWC2011]元素 - 线性基 - 贪心
P4570 [BJWC2011]元素 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 给你 \(n\) 个二元组 \( ...
- df卡住的解决办法
在使用网络存储时,如果网络存储出问题.比如使用NFS,网络中断,df -h会卡住 情形一 ctrl+c是能取消中断的,这种情况算是比较幸运.使用mount查看有哪些挂载点,将其卸载即可. 情形二 ct ...
- 一、搭建SpringBoot2.0.0M4基础Web项目
本次开发环境为: 系统:Linux Mint 18 JDK:1.8 开发工具:IntelliJ IDEA 2017.2.4 1.启动IDEA工具,开始创建一个基础项目.点击Create New Pro ...
- golang/beego 微信模版消息
// GO的微信SDK我用的是这个:https://github.com/silenceper/wechat // 发送模版消息 // UserNickName,UserMobile是发起预约的人的昵 ...