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 相关文章推荐
Apache如何部署django项目
May 21 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
python将控制台输出保存至文件的方法
Jan 07 Python
对Python之gzip文件读写的方法详解
Feb 08 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
Python实现ATM系统
Feb 17 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
django模板获取list中指定索引的值方式
May 14 Python
Django中使用Json返回数据的实现方法
Jun 03 Python
python cv2.resize函数high和width注意事项说明
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中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
对python周期性定时器的示例详解
2019/02/19 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
开学典礼感言
2014/02/16 职场文书
机械专业求职信范文
2014/07/15 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
2014年审计工作总结
2014/11/17 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
社团招新宣传语
2015/07/13 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
Python语言中的数据类型-序列
2022/02/24 Python