美文网首页
高阶函数map,reduce,filter,sorted,匿名函

高阶函数map,reduce,filter,sorted,匿名函

作者: 一二三开花 | 来源:发表于2020-10-25 20:29 被阅读0次

map函数:

map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。(Iterable表示可迭代对象)
例子:

>>> def f(x):
...     return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

等同于

L = []
for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
    L.append(f(n))
print(L)

把list转换成字符串

list(map(str,[1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

reduce函数:

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']:

L1 = ['AdmIn', 'anny', 'LUCY', 'sandY', 'wILl']
def normlize(name):
    return name[:1].upper() + name[1:].lower()
    # return name.capitalize()

L2 = list(map(normlize, L1))
print(L2)

这里name.capitalize()
capitalize() 将字符串的第一个字母变成大写,其他字母变小写,该方法返回一个首字母大写的字符串。

filter函数

把一个序列中的空字符串删掉,可以这么写:

def not_empty(s):
    return s and s.strip()

list(filter(not_empty, ['A', '', 'B', None, 'C', '  ']))
# 结果: ['A', 'B', 'C']

这里strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
返回移除字符串头尾指定的字符生成的新字符串。

sorted函数

Python内置的sorted()函数就可以对list进行排序:

sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:

>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
 sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
忽略大小写,用lower或者upper
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']
要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

lambda匿名函数

匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:

def build(x, y):
    return lambda: x * x + y * y

相关文章

  • 高阶函数map,reduce,filter,sorted,匿名函

    map函数: map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每...

  • Python 函数式编程

    高阶函数 能接受函数做参数的函数 map() 函数 reduce() 函数 filter() 函数 sorted(...

  • 匿名函数3(实战)

    匿名函数3(实战) 接下来学习 : max,min,sorted,map,reduce,filter .这些函数可...

  • 第五章

    高阶函数 map,filter,reduce匿名函数 lambdaany/all可调用对象,创建call方法内省...

  • Python学习笔记06-函数式编程

    高阶函数 下面介绍一下函数的高级用法,包括Map/Reduce、filter、sorted、lambda、deco...

  • python lambda

    lambda是匿名函数。前面我们提到python高阶函数,学习了map,reduce,filter等python内...

  • 系统高阶函数

    主要包括: map 函数 reduce 函数 filter 函数 sorted 函数 map 函数 map(fun...

  • 高阶组件

    高阶函数:接受一个或多个函数并返回一个函数 JS中,array的map、filter、reduce等方法就是高阶函...

  • 【Hadoop】一:MapReduce初探

    基本概念 在python和swift中,map,reduce都是一种高阶函数(还有filter),那么什么是高阶函...

  • 【Python学习笔记】高阶函数map()、filter()和r

    高阶函数map()、filter()和reduce() 初学python的时候,对于含有map()、filter(...

网友评论

      本文标题:高阶函数map,reduce,filter,sorted,匿名函

      本文链接:https://www.haomeiwen.com/subject/unbnmktx.html