首页 > 编程语言 >python 高阶函数

python 高阶函数

时间:2022-12-03 00:44:47浏览次数:43  
标签:map 函数 python newlist range print iterable1 高阶

高阶函数(High-order Function)

​ 数学概念 y = f(g(x))

​ 在数学和计算机科学中,高阶函数应当是至少满足下面一个条件的函数

​ 接受一个或多个函数作为参数

​ 输出一个函数

sorted函数原理

练习:自定义sort函数

仿照内建函数sorted,请自行实现一个sort函数(不用使用内建函数),能够为列表元素排序思考:通过练习,思考sorted函数的实现原理,map、filter函数的实现原理

思路:

​ 内建函数sorted函数,它返回一个新的列表,使用reverse可以设置升序或降序,使用key可以设置一个用于比较的函数(自定义函数也要实现这些功能)

​ 新建一个列表,遍历原列表,和新列表中的当前值依次比较,决定带插入数插入到新列表的什么位置

import random


def sort(iterable, *, key=None, reverse=False):
    newlist = [0] * len(iterable)
    iterable1 = iterable.copy()
    if key:
        for i in range(len(iterable)):
            iterable1[i] = key(iterable[i])
    for i in range(0, len(iterable1)):
        c = i
        newlist[i] = iterable1[i]
        if i > 0:
            for j in range(i):
                w = newlist[i - j - 1] < iterable1[i] if reverse else newlist[i - j - 1] > iterable1[i]
                if w:
                    newlist[i - j] = newlist[i - j - 1]
                    c = i - j - 1
                else:
                    break
            newlist[c] = iterable1[i]
    return newlist


a = [i for i in range(1, 10)]
# a = ['a', 'b', 'c', 'd', 1, 2, 3, 4]
random.shuffle(a)
print(a)
print(sort(a))
print(a)

内建高阶函数

排序sorted

定义sorted(iterable, *, key=None, reverse=False) ->list

过滤filter

​ 定义filter(function, iterable)

​ 对可迭代对象进行遍历,返回一个迭代器 是惰性的,需要催动

​ function参数是一个参数的函数,且返回值应当是bool类型,或其返回值等效布尔值。

​ function参数如果是None,可迭代对象的每一个元素自身等效布尔值

print(list(filter(lambda x: x % 3 == 0, [1, 9, 55, 150, -3, 78, 28, 123])))
#结果
[9, 150, -3, 78, 123]

print(list(filter(None, range(5))))
#结果
[1, 2, 3, 4]

print(list(filter(None, range(-5, 5))))
#结果
[-5, -4, -3, -2, -1, 1, 2, 3, 4]

映射map

​ 定义map(function, *iterables) -> map object

​ 对多个可迭代对象的元素,按照指定的函数进行映射

​ 返回一个迭代器

print(list(map(lambda x: 2 * x + 1, range(10))))
#结果
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

print(dict(map(lambda x: (x % 5, x), range(500))))
#结果
{0: 495, 1: 496, 2: 497, 3: 498, 4: 499}

print(dict(map(lambda x, y: (x, y), 'abcde', range(10))))
#结果
{'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4}

标签:map,函数,python,newlist,range,print,iterable1,高阶
From: https://www.cnblogs.com/guangdelw/p/16946067.html

相关文章

  • python 装饰器
    defadd(x,y):returnx+ydeflogger(fn):defwrapper(*args,**kwargs):print('调用前增强')ret=fn(*args,**kwargs)#参数解构......
  • python 函数与生成器
    函数Python函数​ 由若干语句组成的语句块、函数名称、参数列表构成,它是组织代码的最小单元​ 完成一定的功能函数的作用​ 结构化编程对代码的最基本的封装,一般按......
  • python-练习(if for while语句)
    1.在终端中输入整数,打印正数,负数,零number=int(input("请输入整数"))ifnumber>0:print("正数")elifnumber<0:print("负数")else:print("零"......
  • Python 两个数字拼接
    问题:如何将两个数字拼接解决方法:将整形数字转成字符串拼接后,在转回整形。>>>a=1>>>b=2>>>c=str(a)+str(b)>>>print(int(c))12 ......
  • 第13章python实训
    实验报告实验目的1.了解和掌握Pygame的基础知识。【实验条件】1.PC机或者远程编程环境。 【实验内容】1.完成第十三章  实例01:篮球自动弹跳。 实例01:创建计......
  • PYTHON - openpyxl (二)
    1.1写数据语句说明工作表["a1"]=值写数据到一个单元格工作表.cell(行,列).value=值写数据到一个单元格工作表.cell(行,列,value=值)同上工作表.......
  • Python - 并行
    futures#使用方法一:defdisplay(*args):print(strftime('[%H:%M:%S]'),end='')print(*args)defloiter(n):msg='{}loiter({}):doingnothingf......
  • Python13章
    实验13:Pygame游戏编程一、实验目的和要求二、实验环境Python3.1064_bit三、实验过程1、实例1:制作一个跳跃的小球游戏(1)代码如下:1#-*-coding:utf-8-*-2......
  • securecrt9使用Python3
     很长一段时间,securecrt支持python,但版本为python2,而且自带的python解释器模块有缺失,关键是不支持三方库,使用上不方便。securecrt9.0开始支持Python3,不像python2.7......
  • 微信小程序开发笔记 - 小程序的四种生命周期函数
    小程序的四种生命周期函数目录小程序的四种生命周期函数1.应用的生命周期函数2.页面的生命周期函数3.组件的生命周期函数4.组件所在页面的生命周期函数生命周期是指......