一. 匿名函数lambda

1.lambda只是一个表达式,函数体比def简单很多。

2.lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去

>>> def add(a,b):
...     return a+b
...
>>> add(1,4)
5
>>>
>>> lambda x:x+2
<function <lambda> at 0x00000273C937B8C8>  #函数
>>>
>>> a=lambda x,y:x+y
>>> a(2,6)
8

>>> f = [lambda x:x*i for i in range(4)]
>>> f[1](1)
3
>>> f1 = [lambda i=i: i*i for i in range(4)]
>>> f1[3]()
9

二 . filter()函数

filter()函数是 Python 内置的有用高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,

返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

例如,在一个list中,删掉偶数,只保留奇数,可以这么写:

def is_odd(n): return n % 2 == 1 filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]) 结果: [1, 5, 9, 15]

学习了lambda函数后,可以一行搞定
>>> list(filter(lambda x:x%2, [1, 2, 4, 5, 6, 9, 10, 15]))[1, 5, 9, 15]
注意:python3 起,filter 函数返回的对象从列表改为 filter object(迭代器),想要使用的话加上list(),将迭代器转换成列表,例如:利用filter(),可以完成很多有用的功能,删除 None 或者空字符串:

>>> def not_empty(s):...     return s and s.strip()...>>> filter(not_empty, ['A', '', 'B', None, 'C', '  '])<filter object at 0x0000020833998AC8>>>>>>> list(filter(not_empty, ['A', '', 'B', None, 'C', '  ']))['A', 'B', 'C']

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

三. map() 函数

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

map(function, iterable, …)

  • function – 函数,有两个参数
  • iterable – 一个或多个序列
  • 将结果作为list返回
>>> def abc(a, b, c):...     return a*10000 + b*100 + c...>>> list1 = [11,22,33]>>> list2 = [44,55,66]>>> list3 = [77,88,99]>>> map(abc,list1,list2,list3)<map object at 0x0000023E269A8BE0>>>> list(map(abc,list1,list2,list3))[114477, 225588, 336699]

list(map(lambda x: x**2, range(5)))[0, 1, 4, 9, 16]

四.reduce()函数reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
def add(x, y):
    return x + y
>>> reduce(add, [1, 3, 5, 7, 9])
25

调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:

先计算头两个元素:f(1, 3),结果为4
再把结果和第3个元素计算:f(4, 5),结果为9
再把结果和第4个元素计算:f(9, 7),结果为16
再把结果和第5个元素计算:f(16, 9),结果为25
由于没有更多的元素了,计算结束,返回结果25
五. 切片
a=[1,2,3,4,5,6,7,8,9]
>>>
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>>
>>> a[::4]    #步长为四
[1, 5, 9]
六.推导列表
[表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件]
例如,假设我们要创建一个平方数组成的列表,比如:
>>> squares = []
>>> for x in range(10):
...     squares.append(x**2)
...
>>> print(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>
我们也可以通过下面的方式获得相同的列表:
>>> squares = [x**2 for x in range(10)]
>>> [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
下面推导列表是求字典中key为整型的数之和

>>> [key  for key in {1:'a',2:"b","a":3} if isinstance(key,int)]
[1, 2]
>>> sum([key  for key in {1:'a',2:"b","a":3} if isinstance(key,int)])
3

 

转载于:https://www.cnblogs.com/liyujie1978/p/9586129.html

python 六剑客(匿名函数和内建函数)相关推荐

  1. Python入门篇-匿名函数

    Python入门篇-匿名函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数概述 1>.什么是匿名函数 匿名,即没有名字 匿名函数,即没有名字的函数 2>. ...

  2. Python中的匿名函数和函数式编程

    Python中的匿名函数和函数式编程 文章目录 Python中的匿名函数和函数式编程 一.匿名函数 匿名函数的格式: 二.函数式编程 map() filter() reduce() 区别 三.'三目运 ...

  3. python中匿名函数的作用_什么是Python中的匿名函数

    匿名函数 lambda x , y : x+y 1.匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的. 2.匿名函数的参数规则.作用域关系与有名函数是一样的. 3.匿名函数的函数体通常应该 ...

  4. python代码:匿名函数lambda、列表解析list comps

    python代码:匿名函数lambda.列表解析list comps 书<Python核心编程(第二版).pdf>,作者:Wesley J. Chun #!/usr/bin/python ...

  5. python中的匿名函数_python匿名函数

    文章导读: 以前自己一直没搞明白Python中的匿名函数,现在拿这个问题基本上搞明白了,拿自己的理解整成一篇文章,附带大量例子,让其更加好理解. 在编程语言中,函数的应用: 1. 代码块重复,这时候必 ...

  6. matlab匿名函数求导,MATLAB中的匿名函数和Python中的匿名函数

    在MATLAB和Python中都有一个叫做匿名函数的东西,在这里对比一下. 一. MATLAB中这样来定义一个匿名函数: f = @(x1, x2, ...) exper @后面的括号里面是自变量,然 ...

  7. python中定义匿名函数的关键字是,Python中的匿名函数

    写python的时候,大多数场景下,我都是if else选手,因为最核心的逻辑几乎都是通过if else语句来实现的.关于匿名函数这块儿,其实可以用常见的循环等方法来实现,但是如果你想成为一个pyth ...

  8. python十六:lambda匿名函数

    # 匿名函数 func = lambda x:x+10 v = func(10) print(v)# 将多个值返回 func = lambda: ('袁绍','沮授','田丰','颜良','文丑') ...

  9. Python老男孩 day16 函数(六) 匿名函数

    https://www.cnblogs.com/linhaifeng/articles/6113086.html -------------------------------------- 九.匿名 ...

最新文章

  1. 深入浅出搜索架构引擎、方案与细节(上)
  2. linux如何自动清buff,centos7
  3. mysql安全性实验心得_mysql安全小结
  4. 软件设计过程经验谈 之 如何做好领域模型设计
  5. centos7 php无法启动服务器,关于Centos7下Apache服务器php应用phpMyAdmin无法正常运行的问题...
  6. 骑车与走路(信息学奥赛一本通-T1050)
  7. 聊聊Top2计算机博士2021年就业选择
  8. 3. 从零开始学CSRF
  9. 《R语言数据挖掘:实用项目解析》——1.11 apply原理
  10. 差分进化算法python_差分进化算法Python实现
  11. Bailian3858 和数【暴力+集合】
  12. String类两种实例化方式的区别
  13. mysql中间件研究(tddl atlas cobar sharding-jdbc)
  14. 计算机考研408每日一题 day161
  15. mybatis传递pojo类学习
  16. 微信小程序登陆\code详解
  17. 锐度对比度饱和度什么的
  18. 在VS 2019中使用HDF5的C API遍历HDF5数据集
  19. 以太坊加密猫Crypto Kitty合约解析
  20. MySQL进阶学习笔记一(未完待续)

热门文章

  1. 教练我想学python_教练,我想学Python:(3)列表和切片,边学习边刷leetcode,三,与,边学边,LeetCode...
  2. Android开发笔记(六)可变字符串
  3. 区块链软件开发:区块链+餐饮
  4. Table Store实时数据通道服务Go SDK快速入门
  5. vue之组件之间的传值
  6. Git之同一台电脑如何连接多个远程仓库
  7. Linux远程桌面工具Xming+Putty的搭建
  8. 类与对象 - PHP手册笔记
  9. iOS: 彻底理解position与anchorPoint
  10. 11.8 自动化测试脚本编写规范(1)