Python中map,reduce,filter和sorted函数的使用方法


Posted in Python onAugust 17, 2015

map

map(funcname, list)

python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list
如下:

def sq(x):
  return x*x #求x的平方
map(sq, [1,3, 5,7,9]) #[1, 9, 25, 49, 81]

在需要对list中的每个元素做转换的时候, 会很方便

比如,把list中的每个int 转换成str

map(str, [23,43,4545,324]) #['23', '43', '4545', '324']

当然, 第二个参数是list, 也可以是tuple 或者是set类list结构的, dict 是不行的,不过返回的结果都是list

map(sq, (1,3, 5,7,9)) # tuple [1, 9, 25, 49, 81]
map(sq, set([1,3, 5,3,7,9])) # set [1, 9, 81, 25, 49]

这里顺便说一下, dict的结构是用{} 表示的,如

{"name": "Yi_Zhi_Yu", "age":25}

是直观的key-value形式, 那么如果{}中的是一个类list的结构呢, 如:

{"Yi_Zhi_Yu", 25}

其实, 这就是set的最终返回形式, 等价于:

set(["Yi_Zhi_Yu", 25])# 你会看到最终的输出形式是{25, 'Yi_Zhi_Yu'}

那么, 自然{}有重复值得时候也会去重

{1,3, 5, 3, 7, 9} #{1, 3, 5, 7, 9}

reduce

reduce(funcname, list)

与map相比 , reduce类似于一个聚合类的应用方法, 把list中的参数, 依次传递给funcname, 每次funcname的参数都是上个funcname 执行结果和下一个list中的元素, 所以, funcname 的 参数必须是两个. 从执行过程看, 有点像递归

例如: 求range(1, 101)(不包括101)的和,

def c_sum(x, y):
  return x + y;
reduce(c_sum, range(1,101)) #5050

filter

filter(funcname, list)

执行过程依次将list中的元素传递到funcname函数中, 根据funcname返回的True或False 保留或丢弃元素

例: 返回某个list中的所有int数据

def is_int(x):
  if isinstance(x, (int)):
    return True
  else:
    return False

 filter(is_int, ["Yi",2, "3", 4]) #[2, 4]

sorted

sorted( list, [comp_func])

排序方法, 第二个是可选参数, 根据可选参数返回的值, 对结果进行排序, comp_func 接受两个参数(x, y), 最终返回的结果应该是-1.0,1, 如果返回的是-1, 表示x<y , 0表示x=y, 1表示x>y, 所以, 实际的排序可以自定义
默认是正序排序:

sorted([3,4, 12, 5, 9, 1]) #[1, 3, 4, 5, 9, 12]

如果是需要倒序排列, 自定义方法:

def m_order(x, y):
  if(x > y):
    return -1
  elif(x == y):
    return 0
  else:
    return 1
sorted([3,4, 12, 5, 9, 1], m_order) #[12, 9, 5, 4, 3, 1]
Python 相关文章推荐
简单介绍Ruby中的CGI编程
Apr 10 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 Python
Selenium定位元素操作示例
Aug 10 Python
python简单实现AES加密和解密
Mar 28 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
Django异步任务线程池实现原理
Dec 17 Python
python怎么判断模块安装完成
Jun 19 Python
Python socket服务常用操作代码实例
Jun 22 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
Aug 16 #Python
使用Python操作MySQL的一些基本方法
Aug 16 #Python
Python中list列表的一些进阶使用方法介绍
Aug 15 #Python
Python中的super()方法使用简介
Aug 14 #Python
在Python中使用正则表达式的方法
Aug 13 #Python
简单讲解Python中的闭包
Aug 11 #Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 #Python
You might like
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
vue系列之requireJs中引入vue-router的方法
2018/07/18 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
Python实现的远程登录windows系统功能示例
2018/06/21 Python
python tkinter界面居中显示的方法
2018/10/11 Python
使用pandas读取文件的实现
2019/07/31 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
java关于string最常出现的面试题整理
2021/01/18 Python
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
党员干部一句话承诺
2014/05/30 职场文书
学习十八大标语
2014/10/09 职场文书
领导班子整改方案
2014/10/25 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
运动会班级前导词
2015/07/20 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
python源码剖析之PyObject详解
2021/05/18 Python