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脚本使得web页面上的代码高亮显示
Apr 24 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
Python使用functools实现注解同步方法
Feb 06 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
Python类的动态绑定实现原理
Mar 21 Python
python 6.7 编写printTable()函数表格打印(完整代码)
Mar 25 Python
Python selenium自动化测试模型图解
Apr 15 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 Python
Python如何截图保存的三种方法(小结)
Sep 01 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小偷的核心程序
2007/04/09 PHP
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
php实现评论回复删除功能
2017/05/23 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
python和ruby,我选谁?
2017/09/13 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
numpy排序与集合运算用法示例
2017/12/15 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
python实现TF-IDF算法解析
2018/01/02 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
django框架cookie和session用法实例详解
2019/12/10 Python
关于python 跨域处理方式详解
2020/03/28 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
加拿大留学自荐信
2014/01/28 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
2015政治思想表现评语
2015/03/25 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
vue实现在data里引入相对路径
2022/06/05 Vue.js