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 相关文章推荐
Python中使用strip()方法删除字符串中空格的教程
May 20 Python
python基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
python PyTorch预训练示例
Feb 11 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
浅析Python打包时包含静态文件处理方法
Jan 15 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 Python
Elasticsearch 基本查询和组合查询
Apr 19 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
PHP 选项及相关信息函数库
2006/12/04 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
用console.table()调试javascript
2014/09/04 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
Js面试算法详解
2018/04/08 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
17个Python小技巧分享
2015/01/23 Python
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
详解python的四种内置数据结构
2019/03/19 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
python如何输出反斜杠
2020/06/18 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
服装促销活动方案
2014/02/23 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
英语系毕业生求职信
2014/07/13 职场文书
房产分割协议书范文
2014/11/21 职场文书
重阳节简报
2015/07/20 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android