一:学习内容

  • lambda函数
  • map函数与reduce函数
  • filter函数
  • sorted函数

二:匿名函数-lambda

1.概念:不使用def这样的语句去定义函数,使用lambda来创建匿名函数

2.特点:

  • lambda只是一个表达式,函数体比def简单
  • 实现的逻辑比较简单,主体是一个表达式,而不是代码块,lambda表达式中封装简单的逻辑
  • lambda函数有自己的命名空间,且不能访问自由参数列表之外的或者全局命名空间的参数

3.格式:

lambda 参数1,参数2,......,参数n:expression

4.lambda函数练习一

a=lambda x:x+1

a(1)

a(2)

lambda作为一个表达式,定义了一个匿名函数,上面的代码x为入口参数,x+1为函数体,用函数来表示为:

def g(x):

return x+1

5.lambda函数练习二

a=lambda x,y,z:(x+y)**z

print(a(1,2,3))

6.lambda函数练习三

def make_repeater(n):

return lambda s:s*n

twice=make_repeater(2)

twice('word')

twice(5)

上面的函数可以转换为:

twice=lambda s,n:s*n

twice('word',2)

twice(5,2)

7.lambda函数练习四

lambda表达式会返回一个函数对象,如果没有变量接受这个返回值,它很快就会被丢弃,也正是由于lambda只是一个表达式,所以它可以直接作为list、dict等成员

lists=[lambda s:s**3,lambda a:a**3]

data=lists[0]

data(2)

三:高阶函数-map和reduce

python内置了map()和reduce函数()

1.map()函数

格式:map(fn,lsd)

参数1是一个函数,fn只有一个参数
参数2是一个序列

功能:将传入的函数依次作用在序列中的每一个元素,并把结果作为新的Iterator返回

举例1:

#将单个字符转成对应字面量整数
def chr2int(chr):
    return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[chr]

list1 = ["2","1","6","5"]
#惰性列表,需要用list显示转换才会显示
res = map(chr2int,list1)
print(res)
print(list(res))

举例2:

#将整数元素的序列转为字符型的
#[1,2,3,4]   ["1","2","3","4"]
a = [1,2,3,4]
print(list(map(str,a)))

2.reduce()函数

格式:reduce(fn,lsd)

参数1为函数,fn有两个参数
参数2位列表

功能:一个函数作用在序列上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素累计运算

举例1:

from functools import reduce
#求一个序列的和
def mySum(x,y):
    return x+y

list2 = [1,2,3,4,5]
r = reduce(mySum,list2)
print(r)

3.map()函数和reduce()函数结合使用

举例1:

#将字符串转成对应字面量数字

def str2int(str):
    def fc(x,y):
        return x*10 + y
    def fs(chr):
        return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[chr]
    return reduce(fc,map(fs,list(str)))

a = str2int("13579")
print(a)
print(type(a))

四:高阶函数-filter()

1.filter()函数

格式:filter(fn,lsd)
参数1为函数
参数2位序列

功能:用于过滤序列,即把传入的参数依次作用于序列的每个元素,根据返回的是True还是False决定是否保留该元素

举例1:

list1 = [1,2,3,4,5]

#筛选条件,偶数保留
def func(num):
    if num % 2 ==0:
        return True
    return False
#惰性序列,需要显示转换为列表才能展示数据
res = filter(func,list1)
print(list(res))
print(list1)

举例2:

data = [["姓名","年龄","爱好"],["tom",25,"无"],["hdd",26,"游泳"]]
def fun2(v):
    v = str(v)
    if v == "无":
        return False
    return True

for line in data:
    s = filter(fun2,line)
    print(list(s))

四:高阶函数-sorted()

用于排序

1.sorted()函数--普通排序

list1 = [4,7,2,6,3]
list2 = sorted(list1)  #默认升序排序
print(list1)
print(list2)

2.sorted()函数--降序排序

list5 = [4,7,2,6,3]
#reverse 按升序排完以后反转
list6 = sorted(list5,reverse=True)
print(list5)
print(list6)

3.sorted()函数--字符串排序按ASCII码值排序

#字符串排序,比较ASCII码值
list7 = ["b","d","a","e"]
list8 = sorted(list7)
print(list7)
print(list8)

4.sorted()函数-自定义排序规则

#按绝对值大小排序
list3 = [4,-7,2,6,-3]
#key接受函数来实现自定义排序规则
list4 = sorted(list3,key=abs)
print(list3)
print(list4)

5.sorted()函数-自定义排序规则2

#按字符串长短排序,函数可以自己写
def myLen(str):
    return len(str)

list9 = ["b333","d11111111","a22","e4322"]
list10 = sorted(list9,key=myLen)
print(list9)
print(list10)

python3笔记十六:python匿名函数和高阶函数的更多相关文章

  1. 十、python沉淀之路--高阶函数初识

    一.高阶函数:分两种:一种是返回值中包含函数体:另一种是把一个函数体当作了参数传给了另一个函数 1.返回值中包含函数体 例1. def test(): print('这是一个测试') return t ...

  2. 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 #与函 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. python内置常用高阶函数(列出了5个常用的)

    原文使用的是python2,现修改为python3,全部都实际输出过,可以运行. 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://bl ...

随机推荐

  1. python 的面试题总汇

    函数作用域; LEGB : L>E>G>B L : local函数内部作用域 E : enclosing函数内部与内嵌函数之间 G : global全局作用域 B : build-i ...

  2. IIS 6.0 PUT上传 任意文件创建漏洞

    IIS 6.0 PUT上传 任意文件创建漏洞 require 1.IIS Server在Web服务扩展中开启了WebDAV. 2.IIS配置了可以写入的权限,包括网站 1.根目录 2.子文件夹 3.i ...

  3. Delphi10.2.3利用THttpClient实现http异步下载

    随着Delphi 10.2.3的发布,随之带来更稳定.更完善的版本.今天借官方的例子,解读一下如何实现Http异步下载并显示下载进度. 使用的核心组件是THttpClient,首先建立一个THttpC ...

  4. In Unix, what is tar, and how do I use it?

      In Unix, the name of the tar command is short for tape archiving, the storing of entire file syste ...

  5. 第十二章·Kibana深入-日志图形展示

    1.Kibana创建区域图 Kibana支持多重图从展示功能,需要日志是json格式的支持. Kibana区域图 打开浏览器,访问:http://10.0.0.54:5601   选择一个日志  ...

  6. 文件浏览:ls&file

    文件浏览主要完成的功能是列出当前目录或指定目录下文件的文件名称以及一些基本的资料. Linux的命令是区分大小写的. 1.  ls:列出当前目录(默认)或指定目录下所有文件,并按字典序排序 语法:ls ...

  7. java8学习之深入函数式接口与方法引用

    函数式接口: 函数式接口[FunctionalInterface]是整个Lambda表达式的一个根源,换句话来说java8中的Lambda表达式要想彻底掌握,前提是要彻底理解好函数式接口,所以这次继续 ...

  8. 获取header信息

    获取header信息 function _get_all_header() { // 忽略获取的header数据.这个函数后面会用到.主要是起过滤作用 $ignore = array('host',' ...

  9. Linux之top 监视系统任务的工具

    top 监视系统任务的工具: 和ps 相比,top是动态监视系统任务的工具,top 输出的结果是连续的:  top 命令用法及参数: top 调用方法: top 选择参数 参数: -b  以批量模式运 ...

  10. linux LVM逻辑卷管理

    什么是LVM LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性. ...