高阶函数
来源:互联网 发布:你是我的兄弟网络电影 编辑:程序博客网 时间:2024/04/29 16:45
函数名指向函数对象
高阶函数:可以接受函数做参数的函数(变量可以指向函数;函数参数可以接受变量)
def add(x,y,f):
return f(1)+f(2)
add(-1,1,abs)
tips1:引用sqrt()注意import math 且math.sqrt
python内置高阶函数:
map(f,list): 接受1(转换)函数f,1list,把函数f一次作用与list的每个元素,得到新list并返回。
注意:不改变原有list,而是返回新list
请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list
def f(s):
return s[0].upper()+s[1:].lower(0)
#.upper()等不改变str本身!!!!!
map(f,list)
reduce(f,list):接受1函数f(接受两个参数),1list。reduce对list每个元素反复调用函数f并返回最终结果。如对list所有元素求和求积。
reduce()可以接受第三个可选参数,作为计算初始值。reduce(f,list,100)
def f(x,y):
return x*y
reduce(f,[2,4,6,8,7],3)
## f(3,2)>f(f(3,2)*4)>....
filter(f,list):接受1函数f,1list。f函数对每个元素判断返回true或false,filer()根据判断结果,返回由符合条件元素组成的新list
请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:
import math
def f(x):
c=int(math.sqrt(x))
return c*c==x
filter(f,range(1.101))
# 注意range()用法!!!!!!!!!!!
sorted(list,f):1.接受一个列表,默认升序
2.接受1列表,1比较函数f来实现自定义排序。比较函数f(x,y)的定义:接受两个参数1x,y,如果[x,y],返回-1;如果[y,x],返回1;x,y相等就返回0
若想实现倒序排序,可以传入一个函数reversed——cmp
def reversed——cmp(x,y):
if x>y:
return -1
if x<y:
return 1
if x==y:
return 0
sorted([3,6,8,4,7],reversed_cmp)
3.对字符串排序,默认按ascii大小比较
对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数,实现忽略大小写升序排序的算法。
输入:['bob', 'about', 'Zoo', 'Credit']
输出:['about', 'bob', 'Credit', 'Zoo']
def f(s1,s2):
u1=s1.upper()
u2=s2.upper()
if u1>u2:
return 1
if u1<u2:
return -1
if u1==u2:
return 0
sorted(['sd','er','xzfs'],f)
- 高阶函数
- 高阶函数
- python高阶函数
- lecture5:高阶函数
- 高阶函数
- 高阶函数,集合
- js高阶函数
- 高阶函数
- 高阶函数
- Scala高阶函数
- js高阶函数
- Scala 高阶函数
- 高阶函数应用
- 3.2-高阶函数
- scala------高阶函数
- C++高阶函数
- js高阶函数
- 高阶函数
- MVC4学习笔记01
- 常用排序算法
- Unity跑酷类游戏自动生成销毁地图
- 硬件以及编程的一些底层概念
- 侃侃自己的IT面试经历
- 高阶函数
- Codeforces Round #324 (Div. 2)C. Marina and Vasya
- The King’s Problem(tarjan求强连通分量缩点+匈牙利求有向无环图的最小路径覆盖)
- JAVA常见面试题整理
- 类图关系在代码中的体现
- 常见的几个Qt编程问题的处理
- HDU 2460
- 如何删除Xcode的描述文件
- 解决Android Studio的ADB not responding