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的randrange()方法使用教程
May 15 Python
利用Python批量生成任意尺寸的图片
Aug 29 Python
python实现可以断点续传和并发的ftp程序
Sep 13 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 Python
Tensorflow卷积神经网络实例
May 24 Python
mac安装scrapy并创建项目的实例讲解
Jun 13 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
python实现三壶谜题的示例详解
Nov 02 Python
快速创建python 虚拟环境
Nov 28 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 飞信好友免费短信API接口开源版
2010/07/22 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
javascript中eval函数用法分析
2015/04/25 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
ant design实现圈选功能
2019/12/17 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
[04:44]DOTA2英雄梦之声_第12期_矮人直升机
2014/06/21 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
Cython 三分钟入门教程
2009/09/17 Python
Python常见数据结构详解
2014/07/24 Python
Python unittest单元测试框架总结
2018/09/08 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
游戏商店:Eneba
2020/04/25 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
成考报名单位证明范本
2014/01/16 职场文书
测控技术自荐信
2014/06/05 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python