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中私有函数调用方法解密
Apr 29 Python
Django原生sql也能使用Paginator分页的示例代码
Nov 15 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
python实现dijkstra最短路由算法
Jan 17 Python
Python理解递归的方法总结
Jan 28 Python
Django异步任务线程池实现原理
Dec 17 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
python 线程的五个状态
Sep 22 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 Python
如何使用Python对NetCDF数据做空间相关分析
Apr 21 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中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
php中this关键字用法分析
2016/12/07 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
javascript json2 使用方法
2010/03/16 Javascript
JavaScript继承方式实例
2010/10/29 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python根据出生年份简单计算生肖的方法
2015/03/27 Python
Python素数检测实例分析
2015/06/15 Python
简单解决Python文件中文编码问题
2015/11/22 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
什么是servlet链?
2014/07/13 面试题
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
校庆接待方案
2014/03/18 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
JVM之方法返回地址详解
2022/02/28 Java/Android