高阶函数

来源:互联网 发布:你是我的兄弟网络电影 编辑:程序博客网 时间:2024/04/29 16:45
变量可以指向函数,直接调用变量和调用函数效果一样。>>>f=abs >>f(-1)  1
函数名指向函数对象

高阶函数:可以接受函数做参数的函数(变量可以指向函数;函数参数可以接受变量)

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([5,2,3,1,4])
[1,2,3,4,5]
#使用list的list.sort()方法。这个方法会修改原始的list(返回值为None)。通常这个方法不如sorted()方便-如果你不需要原始的list,list.sort()方法效率会稍微高一些。另一个区别在于list.sort()方法只为list定义。而sorted()函数可以接收任何的iterable。
 




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)










0 0
原创粉丝点击