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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
python正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
python实现人脸识别代码
Nov 08 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
Python反射和内置方法重写操作详解
Aug 27 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
python实现公司年会抽奖程序
Jan 22 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
Django外键(ForeignKey)操作以及related_name的作用详解
Jul 29 Python
Python爬虫学习之获取指定网页源码
Jul 30 Python
TensorFlow固化模型的实现操作
May 26 Python
python等待10秒执行下一命令的方法
Jul 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入门的学习方法
2007/01/02 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
PHP抽象类和接口用法实例详解
2019/07/20 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
用Python编写简单的微博爬虫
2016/03/04 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
美国著名手表网站:Timepiece
2017/11/15 全球购物
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
工程师岗位职责
2013/11/08 职场文书
护士演讲稿范文
2014/01/05 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
企业务虚会发言材料
2014/10/20 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
生死抉择观后感
2015/06/09 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
Go Plugins插件的实现方式
2021/08/07 Golang