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之Character string(实例讲解)
Sep 25 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
python获取当前目录路径和上级路径的实例
Apr 26 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
Python中调用其他程序的方式详解
Aug 06 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
PyTorch中Tensor的维度变换实现
Aug 18 Python
Python3常见函数range()用法详解
Dec 30 Python
python中68个内置函数的总结与介绍
Feb 24 Python
python 代码运行时间获取方式详解
Sep 18 Python
Python用SSH连接到网络设备
Feb 18 Python
用Python爬取某乎手机APP数据
Jun 15 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中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
php设计模式之命令模式使用示例
2014/03/02 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
Python实现二维数组输出为图片
2018/04/03 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
一套PHP的笔试题
2013/05/31 面试题
英文版销售经理个人求职信
2013/11/20 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
检讨书模板大全
2015/05/07 职场文书
务工证明怎么写
2015/06/18 职场文书
初三语文教学反思
2016/03/03 职场文书