python序列的高阶函数:map,reduce,filter,sorted
发布日期:2021-06-29 11:42:42 浏览次数:2 分类:技术文章

本文共 2023 字,大约阅读时间需要 6 分钟。

函数本身也可以赋值给变量,即:变量可以指向函数

abs   # 
即abs()函数,是函数本身f = abs #
是函数本身f(-10) # 10 是函数调用

那么函数名是什么呢?函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!

高阶函数:

既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

def add(x, y, f):  # 定义一个高阶函数,因为出入变量包含了函数    return f(x) + f(y)add(-5, 6, abs)

 map函数

map() 函数语法:   根据提供的函数对指定序列做映射

map(function, iterable, ...) 

  • function -- 函数
  • iterable -- 一个或多个序列
  • Python 2.x 返回列表。

    Python 3.x 返回迭代器。

 reduce函数

reduce() 函数语法:函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

reduce(function, iterable[, initializer])

  • function -- 函数,有两个参数
  • iterable -- 可迭代对象
  • initializer -- 可选,初始参数
  • 返回函数计算结果。

有初始化值的情况, 这个时候就不是取列表的前两项, 而是取初始值为第一个,序列的第一个元素为第二个元素,开始进行lambda函数的应用计算.

from functools import reduces=[1,2,3,4]print(reduce(lambda x,y: x+y, s,5))'''5是初始值,为第三个参数计算呢过程-->5+1=6-->6+2=8-->8+3=11-->11+4=15'''

filter函数

filter() 方法的语法:filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

filter(function, iterable)

  • function -- 判断函数。
  • iterable -- 可迭代对象。

sorted函数

sorted 语法:

sorted(iterable, key=None, reverse=False)

  • iterable -- 可迭代对象。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
  • sorted()函数也是一个高阶函数,它可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:sorted([36, 5, -12, 9, -21], key=abs)

list 的 list.sort() 方法会修改原始的 list(返回值为None)。通常这个方法不如sorted()方便-如果你不需要原始的 list,list.sort()方法效率会稍微高一些。另一个区别在于list.sort() 方法只为 list 定义。而 sorted() 函数可以接收任何的 iterable。

# -*- coding: utf-8 -*-L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]def by_name(t):    return t[0].lower()def by_score(t):    return -t[1]# 按名字排序L1 = sorted(L, key=by_name)  L1 = sorted(L, key=lambda t:t[0].lower())  # 按成绩从大到小排序L2 = sorted(L, key=by_score)L2 = sorted(L, key=lambda t:t[1], reverse=True)L2 = sorted(L, key=lambda t:-t[1])"""如果L是一个dict,那么dict.items()就会将dic转化成上述的元组列表,然后达到对dict排序的目的"""

 

 

 

 

 

 

 

 

转载地址:https://blog.csdn.net/zz2230633069/article/details/108102789 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python模块的定义,和模块的作用域
下一篇:字符编码(python编码机制的过去和现在)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月24日 21时28分05秒