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 ...
随机推荐
- centos7下使用mysql离线安装包安装mysql5.7
服务器环境: centos7 x64 需要安装mysql5.7+ 一.卸载CentOS7系统自带mariadb # 查看系统自带的Mariadb [root@CDH-141 ~]# rpm -qa|g ...
- 【ASP.NET Core】EF Core 模型与数据库的创建
大家好,欢迎收看由土星卫视直播的大型综艺节目——老周吹逼逼. 今天咱们吹一下 EF Core 有关的话题.先说说模型和数据库是怎么建起来的,说装逼一点,就是我们常说的 “code first”.就是你 ...
- IEEE754标准的浮点数存储格式
操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 基本存储格式(从高到低) : Sign + Exponent + Fraction Sign : 符号位 Exponent ...
- 每天一个linux命令:vmstat
1.命令简介 vmstat(Virtual Memory Statistics 虚拟内存统计) 命令用来显示Linux系统虚拟内存状态,也可以报告关于进程.内存.I/O等系统整体运行状态. 2.用法 ...
- unit3d 初次接触
最近, 有朋友告我,他们做那个 vr 视频啥的,告我看后,感觉很好,故 ,就去网上搜索一下,了解如下: 1..unit 3d 是啥? Unity3D是一个跨平台的游戏引擎 是由Unity Techno ...
- java写桌面程序
一:使用java swing开发窗口程序 简述: 1.文章内容主要是使用java swing类库开发一个小的窗口程序,然后使用exe4j发布成exe可以安装的程序,让初学者对使用java来做pc软件开 ...
- git上传本地Intellij idea 项目到码云的git仓库中
.安装git客户端 Window下安装git客户端. 二.配置Intellij idea中的Git/ GitHub 打开Preference-- Version Control. 下拉选择Github ...
- Android Studio集成到Genymotion模拟器
环境:Mac Android Studio 一.下载Android Studio 下载地址:http://www.android-studio.org/ 这个的安装没啥好说的了,基本的. 二.下载Ge ...
- SNF软件开发机器人-子系统-导出-导入功能-多人合作时这个功能经常用到
导出 导出可以将资源表和子系统导出并形成一个json文件. 1.效果展示: 2.使用说明: 点击导出按钮后会弹出一个导出页面.页面的左侧可以选择功能,右侧可以选择资源表,选择功能的同时右侧中功能所需的 ...
- 在tmux会话之间共享窗口(Windows & Panes)
去年写过一篇 从Tmux 转到GNU Screen,理由是我可以 在两个显示器上通过PuTTY连接到同一个GNU Screen会话,但两个显示器可以显示不同的窗口(用GNU Screen的术语来说,是 ...