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 相关文章推荐
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
python操作ssh实现服务器日志下载的方法
Jun 03 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
python实现简易学生信息管理系统
Apr 05 Python
Python列表元素常见操作简单示例
Oct 25 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
基于python图像处理API的使用示例
Apr 03 Python
Python中flatten( ),matrix.A用法说明
Jul 05 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+oracle 分页类
2006/10/09 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
JS原型对象通俗&quot;唱法&quot;
2012/12/27 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
详解vue 命名视图
2019/08/14 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
python实现DEM数据的阴影生成的方法
2019/07/23 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
Python Celery多队列配置代码实例
2019/11/22 Python
python爬虫实现获取下一页代码
2020/03/13 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
迎新晚会策划方案
2014/06/13 职场文书
工商管理本科生求职信
2014/07/13 职场文书
师德师风的心得体会
2014/09/02 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
药品开票员岗位职责
2015/04/15 职场文书
婚宴父母致辞
2015/07/27 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
python使用shell脚本创建kafka连接器
2022/04/29 Python