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 ...
随机推荐
- zookeeper三节点集群安装记录
以下是3个节点的zk安装记录. 下载 下载地址: http://mirrors.shu.edu.cn/apache/zookeeper/ cd /data/opt/zk wget http://mir ...
- Glide终于解决了同时绑定多个webp格式图片的问题
前端时间,要给项目换个图片加载的库,使用Glide 3.7版本进行测试, 发现在快速滑动列表(每个item都会加载一个app的图标,采用webp格式,即同时加载多个webp格式)的时候,一屏至少有2- ...
- Android自定义控件实战——滚动选择器PickerView
转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38513301 手机里设置闹钟需要选择时间,那个选择时间的控件就是滚动选择器, ...
- php : 开发记录(2017-03-10)
0.后台 循环N*10000次操作的简单处理 后台需要循环做N*10000次级别的工作时候,比如,发送邮件,推送通知.可以先把所有数据导入数据表(数据库操作所需的时间1~2秒),然后前台循环发送请求, ...
- 分析轮子(八)- List.java 各种遍历方式及遍历时移除元素的方法
注:玩的是JDK1.7版本 1:先尝栗子,再分析,代码简单,注释清晰,可自玩一下 /** * @description:测试集合遍历和移除元素的方式 * @author:godtrue * @crea ...
- 【网络编程】——Lighttpd 返回HTTP/1.1 417 Expectation Failed
最近在使用python 的 pcurl 发送 post 请求到服务端的时候[服务端使用的服务是Lighttpd],发现只要 post 请求的数据超过 1024 之后,就会返回如下错误: * Hostn ...
- Windows 使用 Gogs 搭建 Git 服务器(转)
Windows 使用 Gogs 搭建 Git 服务器 随便说两句 之前有使用 Gitblit 在Windows搭建Git服务器,用的也挺好的,可能安装起来略麻烦一点.现在全用 Gogs 在wind ...
- virtualbox 在物理机是无线网卡的时候做桥接配置
在“计算机”图标上右键选择“管理”,在打开的“计算机管理”窗口中选择左侧的“设备管理器”,然后在右侧图示的地方右键选择“添加过时硬件”. 在打开的窗口中点击“下一步”. 选择“安装我手动从列表中选择的 ...
- centos7.3安装nvidia驱动和cuda9
一, 挂载本地源镜像 1) 下载操作系统镜像 所有服务器操作系统必须统一,本平台只支持 CentOS 7.3 1611,镜像下载地址. 2) 上传镜像到服务器 ,假设上传在 root 下 3) 建立挂 ...
- PHP正则验证类
项目中经常使用到的验证,很使用的.查看与下载<?php /** * 验证类 * * @lastmodify 2015-12-19 * @author wuheng */ class Verify ...