python 六剑客(匿名函数和内建函数)
一. 匿名函数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]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>>
>>> a[::4] #步长为四
[1, 5, 9]
>>> for x in range(10):
... squares.append(x**2)
...
>>> print(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>
>>> [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[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 六剑客(匿名函数和内建函数)相关推荐
- Python入门篇-匿名函数
Python入门篇-匿名函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数概述 1>.什么是匿名函数 匿名,即没有名字 匿名函数,即没有名字的函数 2>. ...
- Python中的匿名函数和函数式编程
Python中的匿名函数和函数式编程 文章目录 Python中的匿名函数和函数式编程 一.匿名函数 匿名函数的格式: 二.函数式编程 map() filter() reduce() 区别 三.'三目运 ...
- python中匿名函数的作用_什么是Python中的匿名函数
匿名函数 lambda x , y : x+y 1.匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的. 2.匿名函数的参数规则.作用域关系与有名函数是一样的. 3.匿名函数的函数体通常应该 ...
- python代码:匿名函数lambda、列表解析list comps
python代码:匿名函数lambda.列表解析list comps 书<Python核心编程(第二版).pdf>,作者:Wesley J. Chun #!/usr/bin/python ...
- python中的匿名函数_python匿名函数
文章导读: 以前自己一直没搞明白Python中的匿名函数,现在拿这个问题基本上搞明白了,拿自己的理解整成一篇文章,附带大量例子,让其更加好理解. 在编程语言中,函数的应用: 1. 代码块重复,这时候必 ...
- matlab匿名函数求导,MATLAB中的匿名函数和Python中的匿名函数
在MATLAB和Python中都有一个叫做匿名函数的东西,在这里对比一下. 一. MATLAB中这样来定义一个匿名函数: f = @(x1, x2, ...) exper @后面的括号里面是自变量,然 ...
- python中定义匿名函数的关键字是,Python中的匿名函数
写python的时候,大多数场景下,我都是if else选手,因为最核心的逻辑几乎都是通过if else语句来实现的.关于匿名函数这块儿,其实可以用常见的循环等方法来实现,但是如果你想成为一个pyth ...
- python十六:lambda匿名函数
# 匿名函数 func = lambda x:x+10 v = func(10) print(v)# 将多个值返回 func = lambda: ('袁绍','沮授','田丰','颜良','文丑') ...
- Python老男孩 day16 函数(六) 匿名函数
https://www.cnblogs.com/linhaifeng/articles/6113086.html -------------------------------------- 九.匿名 ...
最新文章
- 深入浅出搜索架构引擎、方案与细节(上)
- linux如何自动清buff,centos7
- mysql安全性实验心得_mysql安全小结
- 软件设计过程经验谈 之 如何做好领域模型设计
- centos7 php无法启动服务器,关于Centos7下Apache服务器php应用phpMyAdmin无法正常运行的问题...
- 骑车与走路(信息学奥赛一本通-T1050)
- 聊聊Top2计算机博士2021年就业选择
- 3. 从零开始学CSRF
- 《R语言数据挖掘:实用项目解析》——1.11 apply原理
- 差分进化算法python_差分进化算法Python实现
- Bailian3858 和数【暴力+集合】
- String类两种实例化方式的区别
- mysql中间件研究(tddl atlas cobar sharding-jdbc)
- 计算机考研408每日一题 day161
- mybatis传递pojo类学习
- 微信小程序登陆\code详解
- 锐度对比度饱和度什么的
- 在VS 2019中使用HDF5的C API遍历HDF5数据集
- 以太坊加密猫Crypto Kitty合约解析
- MySQL进阶学习笔记一(未完待续)
热门文章
- 教练我想学python_教练,我想学Python:(3)列表和切片,边学习边刷leetcode,三,与,边学边,LeetCode...
- Android开发笔记(六)可变字符串
- 区块链软件开发:区块链+餐饮
- Table Store实时数据通道服务Go SDK快速入门
- vue之组件之间的传值
- Git之同一台电脑如何连接多个远程仓库
- Linux远程桌面工具Xming+Putty的搭建
- 类与对象 - PHP手册笔记
- iOS: 彻底理解position与anchorPoint
- 11.8 自动化测试脚本编写规范(1)