python六剑客:map()、lambda()、filter()、reduce()、推导类表、切片
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python六剑客:map()、lambda()、filter()、reduce()、推导类表、切片,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2705字,纯文字阅读大概需要4分钟。
内容图文
![python六剑客:map()、lambda()、filter()、reduce()、推导类表、切片](/upload/InfoBanner/zyjiaocheng/855/e7a384c50d1e49ee8cf14e09b1cb9203.jpg)
一:map():映射
map()有两个参数,一个函数,一个序列,序列中每一个元素都会做为参数传给前边的函数,然后生成新的列表,
第二个参数必须用一个序列:元祖,列表,字符串
>>> map(str,[1,2,3,4])
['1', '2', '3', '4']
也可以自己定义函数
搭配lambda函数
>>> map(lambda x:x.upper(),"abc")
['A', 'B', 'C']
二:lambda匿名函数
lambda语句被用来创建新的函数对象,并且在运行时返回它们。
Python使用lambda关键字来创建匿名函数。这种函数得名于省略了用def声明函数的标准步骤。
lambda只是一个表达式,函数体比def简单很多
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
#如下边例子,x,y,z相当于匿名函数中的参数,x+y+z是函数体,匿名函数的定义赋值给了a,a就是一个函数,可以用a()来调用这个函数
>>> a=lambda x,y,z:x+y+z
>>> a(1,2,3)
6
三:filter()
filter和map的区别是,filter保留函数返回为true的值,不返回的不显示
map是保留返回的结果,无论返回的是啥,filter会把不满足true条件的结果忽略掉
例子:删除字符串中的小写字母
#encoding=utf-8
def delete_lowercase(s):
if s>='a' and s<='z':
return ""
else:
return s
print map(delete_lowercase,"AABBaabb")
print "".join(map(delete_lowercase,"AABBaabb"))
结果:
D:\>python test.py
['A', 'A', 'B', 'B', '', '', '', '']
AABB
保留数字中大于5的位
#-*-coding:utf-8-
def func(n):
if int(n)>5:
return n
print filter(func,"123467")
#只要return的是True,就会保留
结果:
D:\>python test.py
67
或者一行搞定
>>> filter(lambda x:int(x)>=5,"12345678")
'5678'
filter()根据参数中的序列,返回相同形式的序列,列表返回列表,字符串返回字符串
或者一行搞定
>>> filter(lambda x:int(x)>=5,"12345678")
'5678'
>>> filter(lambda x:int(x)>=5,list("12345678"))
['5', '6', '7', '8']
>>> filter(lambda x:int(x)>=5,"12345678")
'5678'
>>> filter(lambda x:int(x)>=5,tuple("12345678"))
('5', '6', '7', '8')
>>> tuple("12345678")
('1', '2', '3', '4', '5', '6', '7', '8')
四:推导列表
>>> [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [i for i in range(10) if i !=5]
[0, 1, 2, 3, 4, 6, 7, 8, 9]
五:reduce()累计操作
Reduce()累计操作,要搭配函数来执行
>>> reduce(lambda x,y:x+y,[1,2,3,4])
10
>>> 1:1+2 2:3+3 3:6+4
>>> reduce(lambda x,y:x+y,range(1,101))
5050
六:切片,就是数列的切片,比较基本也比较常用
>>> [1,2,3,4,5][3:5]
[4, 5]
练习:用map,lambda,推到列表,正则,join,去掉字符串中的小写字母
>>> import re
>>> "".join([i for i in map(lambda x:(re.match(r"[A-Z]*",x).group()),"abcABC") if i !=""])
'ABC'
拆解过程:
>>> [i for i in map(lambda x:(re.match(r"[A-Z]*",x).group()),"abcABC") if i !=""]
['A', 'B', 'C']
>>> [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [i for i in range(10) if i !=5]
[0, 1, 2, 3, 4, 6, 7, 8, 9]
>>> map(lambda x:(re.match(r"[A-Z]*",x).group()),"abcABC")
['', '', '', 'A', 'B', 'C']
>>> lambda x:(re.match(r"[A-Z]*",x).group())("abcABC")
<function <lambda> at 0x00000000054EDB38>
>>> re.match(r"[A-Z]*","ABC").group()
'ABC'
未完
内容总结
以上是互联网集市为您收集整理的python六剑客:map()、lambda()、filter()、reduce()、推导类表、切片全部内容,希望文章能够帮你解决python六剑客:map()、lambda()、filter()、reduce()、推导类表、切片所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。