高阶函数与Python3几个内置函数

这篇文章简谈高阶函数与Python3中几个内置函数的例题
高阶函数就是能接受函数作参数的函数。
我们知道变量可以指向函数,而函数的参数可以接受变量,
一个函数可以接收另一个函数作为参数,
能接受函数作为参数的函数就是高阶函数。
比如说,一个简单的高阶函数:

def shu_1():
    print("宇宙之大")
def shu2(x):
    z=x()
    print("个人之小")
shu2(shu_1)  #参数为函数

内置函数与高阶函数例题中的使用:

  1. math.sqrt函数(内置数学模块中的函数)

题目:一个使用数学模块中计算两数平方根之和的函数:

import math

def add(x, y, f):
    return f(x) + f(y)
#x和y可以传任意传入,f我们则传入一个计算平方根的函数
print(add(25,25,math.sqrt))
  1. map()函数
    map() 会根据提供的函数对指定序列做映射。
    用法:map(function, iterable, …)
    function – 函数, iterable – 一个或多个序列。

题目:没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list

def format_name(s):
    return s.title()

list(map(format_name, ['adam', 'LISA', 'barT']))
  1. Reduce函数
    reduce函数也是一个参数为函数,一个为可迭代对象的高阶函数,其返回值为一个值而不是迭代器对象,故其常用与叠加、叠乘等。

题目:请利用recude()来求积:
输入:[2, 4, 5, 7, 12]
输出:245712的结果

from functools import reduce  #在Python3中reduce函数不再是内置函数,需要从functools模块导入
def prod(x, y):
    return x*y

print(reduce(prod, [2, 4, 5, 7, 12]))
  1. filter函数
    filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

例题:请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

import math

def is_sqr(x):
    r=int(math.sqrt(x))  #取整数用下一步计算判断其平方是否等于原值
    return r*r==x   
list(filter(is_sqr, range(1, 101)))
  1. sorted函数
    sorted 语法:
    sorted(iterable, key=None, reverse=False)
    参数说明:
    iterable – 可迭代对象。
    key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
    sorted与sort不同之处有几点:sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
    list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

题目:对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数,实现忽略大小写排序的算法。
输入:[‘bob’, ‘about’, ‘Zoo’, ‘Credit’]
输出:[‘about’, ‘bob’, ‘Credit’, ‘Zoo’]

def cmp_ignore_case(s1, s2):
    x = s1.upper()
    y = s2.upper()
    if x<y:
        return -1
    if x>y:
        return 1
    return 0
print(sorted(['bob','about', 'Zoo', 'Credit'], key = lambda x: x.upper()))  #注释如下
<!-- 对key = lambda x: x的注释:当待排序列表的元素由多字段构成时,我们可以通过sorted参数key来制定我们根据那个字段对列表元素进行排序。
  key=lambda 元素: 元素[字段索引]
  例如:想对元素第二个字段排序,则
             key=lambda x: x[1]   -->

Python还有很多内置高阶函数。我们先写到这里。

猜你喜欢

转载自blog.csdn.net/qq_45701131/article/details/106159928