Python进阶学习笔记——函数式编程之高阶函数

本文介绍了Python中的高阶函数,包括map()、reduce()和filter()的使用示例。map()用于对列表元素应用函数并返回新列表;reduce()用于将列表元素两两组合并应用函数,得到最终结果;filter()则根据提供的函数返回True的元素组成新列表。此外,还讨论了自定义排序函数sort()的使用技巧。
摘要由CSDN通过智能技术生成

1、变量可以指向一个函数

2、函数名可以看做一个变量名

3、高阶函数——可以接受函数作为参数的函数


Python内置高阶函数

1)map():

接受一个函数 f,并接受一个list,将list的每一个元素作用于 f 。返回一个新的list(Python2.x)

注意:map()不改变原有的list,而是返回一个新的list

eg:规范化命名nameLst= ['AShin', 'MONSTer', 'MASA', 'STOnE', 'MiNg', 'JoEy']

def format_str(s):

return s[0].upper()+s[1:].lower()

list(map(format_str, nameLst))

------------------------------------------------------------------------------------------------

在python3里面,map()、filter()的返回值已经不再是list,而是iterators, 所以想要使用,只用将iterator 转换成list 即可, 比如  list(map()) 


2)reduce():

接受一个函数f,并接受一个list,(可选参数,作为计算的初始值);将list中每个元素两两反复调用函数f,如果有初始值参数,则第一次将初始值与list中的第一个元素进行调用。返回最终结果值

eg:求乘积 

from functools import reduce

def prod(x, y):

return x * y

mul_lst=[1,2,3,4,5]

reduce(prod, mul_lst)


3)filter():

接受一个函数f,并接受一个list,根据函数f对list中每个元素进行判断,返回结果为True的元素,并组成一个新的list(Python2.x)。

注意:函数f,是一个判断函数,返回True 或者 False

eg1: 删除字符串列表中的空白字符,以及字符串中的空格

def delete_blank(s1):

return s1.strip()

s = ['ABC', ' ', '123', '  Gdf ', '  QW   ']

list(filter(delete_blank, map(delete_blank, s)))

eg2: 1-100中,这100个整数中平方根为整数的数

import math

def sqrt_int(num):

return math.sqrt(num) == (int)(math.sqrt(num))

list(filter(sqrt_int, range(1, 101)))

--------------------------------------------------------------------------------------------------------

此处,粘贴一个内置函数的用法。

注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。

当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:

a = '     123'
a.strip()

结果: '123'

a='\t\t123\r\n'
a.strip()

结果:'123'

4)自定义排序函数 sort()

sorted()实现的是从小到大的排序,而可以给它加一个比较函数调用实现从大到小的排序。

def cmp_reverse(x, y):

if (x > y):

return -1

elif(x < y):

return 1

return 0

lst=[4, 5, 0, 1, 3, 2]

sorted(lst, cmp_reverse)    ##python 2.x

sorted(lst, reverse=False)  ##python 3.x

注意:

sorted (iterable,  cmp = None , key = None , reverse = False )        ## Python 2.x
sorted (iterable, key = None , reverse = False )                  ## Python 3.x



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值