匿名函数

描述:
    关键字 lambda 定义的函数
    
语法:

    函数名 = lambda 参数:返回值

返回值:
    函数返回结果值

实例:

一个参数的匿名函数:

func = lambda x: x*x

f = func(2)
print(f) # 执行结果:
# 4

多个参数的匿名函数:

func = lambda x, y: x+y

f = func(1, 2)
print(f) # 执行结果:
# 3

高阶函数

(1)map

描述:
    map()会根据提供的函数对指定序列做映射。
    
    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数的返回值的新列表
    
语法:

map(function, iterable, ...)

参数:
    function -- 函数
    iterable -- 一个或多个序列
    
返回值:
    python 2.X 返回列表
    python 3.X 返回迭代器

实例:

提供两个列表,对相同位置的列表数据进行相加

(2)reduce

描述:
    对参数序列中的元素进行累积,效果如下:
    
    reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
    
语法:

reduce(function, iterable[, initializer])

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

实例:

结合匿名函数+高阶函数的使用:

from functools import reduce

r = reduce(lambda x, y: x + y, [1,2,3,4,5])
print(r) # 执行结果:
# 15

(3)filter

描述:
    python内建的 filter() 函数用于过滤序列
    
语法:
    filter()接收一个函数和一个序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素

实例:

去掉list中的偶数,只保留奇数

l = [1,2,3,4,5,6,7, 8, 9]
def is_odd(n):
return n % 2 == 1 f = filter(is_odd, l)
print(list(f)) # 执行结果:
# [1, 3, 5, 7, 9]

练习:

回数是指从左到右读和从右到左读都是一样的数,例如:12321,909  请利用 filter() 筛选出回数

def is_palindrome(n):
hx = str(n) # 首先将参数转换为str类型
if hx == hx[::-1]: # 如果从左到右,从右到左都相等,则返回回数
return hx

(4)sorted

描述:
    sorted() 函数对所有可迭代的对象进行排序操作。
    
sort 和 sorted 区别:
    sort 是应用在 list 上的方法,sorted可以对所有可迭代的对象进行排序操作。
    list 的 sort 方法返回是对已经存在的列表进行操作,无返回值,而内建函数sorted 方法返回的是一个新的list,而不是在原来的基础上进行的操作
    
语法:

sorted(iterable[, cmp[, key[, reverse]]])

key: 主要用来进行比较的元素,只有一个参数,具体的函数的参数就是取自与可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse:默认排序规则是升序排序, reverse=True 则降序排序
    
返回值:
    返回重新排序的列表

实例:

比较数字

In [1]: sorted([36, 5, -12, 9, -21])
Out[1]: [-21, -12, 5, 9, 36]

定义key函数,使用绝对值进行排序

In [2]: sorted([36, 5, -12, 9, -21], key=abs)
Out[2]: [5, 9, -12, -21, 36]

定义key函数,使用绝对值进行降序排序

In [3]: sorted([36, 5, -12, 9, -21], key=abs, reverse=True)
Out[3]: [36, -21, -12, 9, 5]

(5)zip

描述:
    zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
    如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

语法:

zip([iterable, ...])

iterable: 一个或多个迭代器
    
返回值:
    返回元组列表
    
实例:

In [10]: a = [1,2,3]

In [11]:  b = [4,5,6]

In [12]: list(zip(a, b ))
Out[12]: [(1, 4), (2, 5), (3, 6)] #以最短的列表作为组合的结尾 In [13]: a = [1,2,3,4,5] In [14]: b = [1,2] In [15]: list(zip(a, b ))
Out[15]: [(1, 1), (2, 2)]

[ python ] 匿名函数和高阶函数的更多相关文章

  1. Python小世界:匿名函数、高阶函数、推导式

    前言 木子本人搞起Python已有多年,一直觉得什么都会,但是有时候实操起来,才觉得很多底层基础的知识都没有彻底的灵活掌握. 另外,网上关于Python基础知识的各种普及已有太多太多. 附上相关大神的 ...

  2. python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数

    目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...

  3. Python之路-函数基础&局部变量与全局变量&匿名函数&递归函数&高阶函数

    一.函数的定义与调用 函数:组织好的.可重复使用的.用户实现单一或者关联功能的代码段.函数能够提高应用的模块性和代码的重复利用率.Python提供了很多内置的函数,比如len等等,另外也可以根据自己的 ...

  4. python开发基础04-函数、递归、匿名函数、高阶函数、装饰器

    匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...

  5. Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数

    高阶函数Higher-orderfunction 变量可以指向函数 >>> abs #abs(-10)是函数调用,而abs是函数本身 <built-in function ab ...

  6. Python技法3:匿名函数、回调函数和高阶函数

    1.定义匿名或内联函数 如果我们想提供一个短小的回调函数供sort()这样的函数用,但不想用def这样的语句编写一个单行的函数,我们可以借助lambda表达式来编写"内联"式的函数 ...

  7. 【python】python函数式编程、高阶函数

    1.map() : python内置的高阶函数,接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并            返回. def f(x): r ...

  8. python入门16 递归函数 高阶函数

    递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ ...

  9. python 函数式编程:高阶函数,map/reduce

    python 函数式编程:高阶函数,map/reduce #函数式编程 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 #(一)高阶函数 f=abs f print ...

  10. python函数式编程之高阶函数学习

    基本概念 函数式编程,是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量.因此,任意一个函数,只要输入确定,输出就确定的这种函数我们称之为纯函数,我们称这种函数没有副作用.而允许使用 ...

随机推荐

  1. 【ListBox】ListBox的相关操作

    Winform中两个listbox的操作是平时比较常用的操作. 本次将以一个Winform实例来分享一下两个listbox的操作,包括:listbox添加项,项的上移下移等操作. 假设有两个listb ...

  2. 使图片相对于上层DIV始终水平、垂直都居中

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. windows下载执行命令大全

      1.bitsadmin命令(只能命令下载到指定路径上,win7以上): bitsadmin /transfer myDownLoadJob /download /priority normal & ...

  4. LOJ #6035.「雅礼集训 2017 Day4」洗衣服 贪心

    这道题的贪心好迷啊~我们对于两个过程进行单独贪心,然后再翻转一个,把这两个拼起来.先说一下单独贪心,单独贪心的话就是用一个堆,每次取出最小的,并且把这个最小的加上他单次的,再放进去.这样,我们得到的结 ...

  5. 浅谈cocosd之autorelease\retain\release的理解

    三种情况,引出问题:   1) new出来的对象需要释放,而释放时,如果有其他人引用了这个对象,再次使用这个对象时,则会出现野指针情况. ==> 于是出现了引用计数的释放管理机制. 2) 对于一 ...

  6. 把一个文件中所有文件名或者文件路径读取到一个txt文件,然后在matlab中读取

    链接: http://blog.csdn.net/dreamgchuan/article/details/51113295 dir /on/b/s  这个读取的是这样的格式:

  7. UVA - 11181 数学

    UVA - 11181 题意: n个人去买东西,其中第i个人买东西的概率是p[i],最后只有r个人买了东西,求每个人实际买了东西的概率 代码: //在r个人买东西的概率下每个人买了东西的概率,这是条件 ...

  8. 使用jvisualvm工具来监控java运行情况

    jvisualvm是jdk自带的工具.所以要先安装jdk   1.jvisualvm工具的路径: 通过which jvisualvm来查看 /usr/local/jdk1.7.0_79/bin/jvi ...

  9. 用Tensorflow实现多层神经网络

    用Tensorflow实现多层神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Tensorflow机器学习实战指南 源代码请点击下方链接欢迎加星 ReLU激活函数/L1范数 ...

  10. [BZOJ1911][BZOJ1912][BZOJ1913]APIO2010解题报告

    特别行动队 Description   这个好像斜率优化不是一般地明显了啊...只不过要分a的正负两种情况考虑是维护上凸还是下凸 /********************************** ...