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三元运算实现方法
Jan 12 Python
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
python实现简单中文词频统计示例
Nov 08 Python
numpy返回array中元素的index方法
Jun 27 Python
python 批量修改/替换数据的实例
Jul 25 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Django 视图层(view)的使用
Nov 09 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
php生成短网址示例
2014/05/05 PHP
初识Laravel
2014/10/30 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
js中取得变量绝对值的方法
2015/01/03 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
python 杀死自身进程的实现方法
2019/07/01 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
大学生找工作推荐信范文
2013/11/28 职场文书
房地产项目策划书
2014/02/05 职场文书
淘宝好评语句大全
2014/12/31 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
天堂的孩子观后感
2015/06/11 职场文书
python保存图片的四个常用方法
2022/02/28 Python
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android
排查Tomcat进程假死的问题
2022/05/06 Servers