Python学习之旅(十三)
Python基础知识(12):函数(Ⅲ)
高阶函数
1、map
map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
def test(x):
return x+2
n=map(test,[1,2,3,4,5])
list(n)
结果:
[3, 4, 5, 6, 7]
把列表中的数字转换成字符串
list(map(str,[1,2,3,4,5]))
结果:
['1', '2', '3', '4', '5']
2、reduce
接收两个参数,一个函数,一个序列,reduce会把结果继续和序列的下一个元素做累积计算
如对序列[1,2,3,4,5]求和
def add(x,y):
return x+y reduce(add,[1,2,3,4,5])
结果:15
把序列[1,2,3]转换成整数15
def test(x,y):
return x*10+y reduce(test,[1,2,3])
结果:123
与map函数配合使用,把str转换成int
from functools import reduce
digits = {'': 0, '': 1, '': 2, '': 3, '': 4, '': 5, '': 6, '': 7, '': 8, '': 9}
def strint(s):
def fn(x,y):
return x*10+y
def charnum(s):
return digits[s]
return reduce(fn,map(charnum,s))
strint("")
结果:123
可以用lambda匿名函数进一步简化
from functools import reduce
digits = {'': 0, '': 1, '': 2, '': 3, '': 4, '': 5, '': 6, '': 7, '': 8, '': 9}
def charnum(s):
return digits[s]
def strint(s):
return reduce(lambda x,y:x*10+y,map(charnum,s))
strint("")
结果:123
3、filter
filter函数用于过滤序列,它接收两个参数,一个函数一个序列
filter函数会根据函数内的条件遍历序列,判断每个元素的布尔值,如果为True则保留
filter()函数返回的是一个Iterator,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list
def test(x):
return x%2==0 list(filter(test,[1,3,6,8,10,17]))
结果:
[6, 8, 10]
删除序列中的空字符
def not_empty(n):
return n and n.strip() list(filter(not_empty, ['Alice', '', 'Bob', None, 'May', ' ']))
结果:
['Alice', 'Bob', 'May']
4、sorted
可以对字符串和列表中的元素进行排序
sorted([84,24,1,136,21])
sorted(["Bob","abc","May","Alice"])
结果:
[1, 21, 24, 84, 136]
['Alice', 'Bob', 'May', 'abc']
注:字母进行排序时,大写字母排在小写字母前面
接收一个key函数实现自定义,如按绝对值大小排序
sorted([-32,6,10,-1,0],key=abs)
结果:
[0, -1, 6, 10, -32]
对字母进行排序时忽略大小写,即先将字母转换成大写(或小写),然后再进行排序
sorted(["Bob","abc","May","Alice"],key=str.upper)
sorted(["Bob","abc","May","Alice"],key=str.lower)
结果:
['abc', 'Alice', 'Bob', 'May']
如果要进行反向排序,可以使用参数reverse=True
sorted(["Bob","abc","May","Alice"],key=str.lower,reverse=True)
结果:
['May', 'Bob', 'Alice', 'abc']
Python学习之旅(十三)的更多相关文章
- 180分钟的python学习之旅
最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...
- Python学习笔记(十三)
Python学习笔记(十三): 模块 包 if name == main 软件目录结构规范 作业-ATM+购物商城程序 1. 模块 1. 模块导入方法 import 语句 import module1 ...
- python学习之旅
python学习分类 python基础 +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...
- Python学习之旅(三十三)
Python基础知识(32):网络编程(Ⅰ) 网络通信是两台计算机上的两个进程之间的通信,而网络编程就是如何在程序中实现两台计算机的通信 P协议负责把数据从一台计算机通过网络发送到另一台计算机 TCP ...
- Python学习之旅(二十三)
Python基础知识(22):进程和线程(Ⅰ) 1.多进程 (1)fork Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程 fork可以在Mac ...
- python学习笔记-(十三)堡垒机
1.课前准备: 本次学习堡垒机相关知识:之前,需要安装Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作. 前提: python3.5程序安装到默认路径下并已添加pa ...
- python学习之旅:array 转 list
最近学习python,记录学习的点滴. >>> import numpy as np >>> a = np.array([[1,2],[3,4]]) >> ...
- Python学习之旅(三十八)
Python基础知识(37):访问数据库(Ⅱ) 二.MySQL MySQL是Web世界中使用最广泛的数据库服务器.SQLite的特点是轻量级.可嵌入,但不能承受高并发访问,适合桌面和移动应用.而MyS ...
- Python学习之旅(三十六)
Python基础知识(35):电子邮件(Ⅱ) 收取邮件就是编写一个MUA作为客户端,从MDA把邮件获取到用户的电脑或者手机上 收取邮件最常用的协议是POP协议,目前版本号是3,俗称POP3 Pytho ...
随机推荐
- std::vector push_back报错Access violation
C/C++ code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include < ...
- 下载网络文件HttpURLConnection.getContentLength()大小为 0
HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestProperty("Acce ...
- wifipineapple外接网卡上网
买了一台wifipineapple, pineapple有两种版本, 第一种是3G版本,可以外接3G上网卡, 还有一种是wifi版本, 包含一个物理的网络插槽, 我买的是第二种 wifipineapp ...
- centos 中查找文件、目录、内容
1.查找文件 find / -name 'filename'12.查找目录 find / -name 'path' -type d13.查找内容 find . | xargs grep -ri 'co ...
- windows10开启hyper-v虚拟化
windows积极融入虚拟化,对pc体验很不错的! 01.程序更新组件 控制面板--->程序-->打开/关闭 windwods功能--->更新完毕,重启windows 02.确认是否 ...
- 构建自己的 Smart Life 私有云(二)-> 连通 IFTTT & Slack
博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml 原文链接:https://blog.wang ...
- ffmpeg 、Vlc参数
ffmpeg.exe -loglevel error -probesize 32 -vsync passthrough -framerate 20 -f gdigrab -i desktop -fil ...
- ###My SQL Date相关函数
###My SQL Date相关函数 #获得当前日期时间 select now(); #date_format(date,format) select date_format('2008-08-08 ...
- Java IO 流总结篇
1. 写在前面的话 I/O ,I 是 Input (输入)的缩写,O是Output (输出) 的缩写,众所周知,人与人之间想要沟通交流,就需要讲彼此都能听懂的语言,比如大家都统一说英语. 人类如果想和 ...
- android sdk content loader 0%不动
Make sure that eclipse is not active. If it is active kill eclipse from the processes tab of the tas ...