Python进阶(九)常用高级函数Counter、defaultdict、nametuple、map、reduce、filter、groupby
文章目录
- Counter计数器
- defaultdict
- namedtuple
- map、reduce、filter函数
- map
- reduce
- filter
- groupby函数
使用高级函数在很多时候会减少自己的代码开发。
Counter计数器
Counter
是一个简单的计数器,例如统计字符出现的个数。Counter
类继承dict
类,所以它能使用dict
类里面的方法。
- 对iterable进行计数
使用Counter
可以很方便地统计出每个元素出现的次数:
上述实现当然可以使用dict
或者for
循环来实现,但是使用Counter
会更方便一点。
- update往Counter新增内容
使用update
可以往Counter
新增内容
- 像字典一样输出key/value
可以像字典一样,遍历输出key/value
:
- 输出最高频率的数据
除此之外还有一个功能,很方便的输出最高频率的数据,比如找到出现次数最高的前三个的内容:
defaultdict
使用dict
时,如果引用的key
不存在,就会抛出KeyError
。如果希望key
不存在时,返回一个默认值,就可以用defaultdict
。它是一个带默认值的字典。当然你也可以使用以下语句来对字典初始化:
if key not in d:d[key] = 0d[key] = []
d[key] += 3
d[key].append(123)
除了在Key
不存在时返回默认值,defaultdict
的其他行为跟dict
是完全一样的。defaultdict
的语法为:
- 语法:
dict =defaultdict(factory_function)
factory_function
可以是str
、int
、list
、set
,可以省略初始化。
- 默认的value为int类型
默认的value
为int
类型,直接加数字:
- 设置value为None
import collections
x = collections.defaultdict(lambda : 'N/A')
x['key1'] = 'abc'
print(x['key1']) # >>> abc
print(x['key2']) # >>> N/A
- 默认的value为list类型
默认的value
为list
类型,直接添加元素:
namedtuple
collections.namedtuple(typename, field_ names, *, verbose= False,
rename= False, module=None)
namedtuple
是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple
的某个元素。
这样一来,我们用nametuple
可以很方便地定义一种数据类型,它具备tuple
的不变性,又可以根据属性来引用。
import collections
Point = collections.namedtuple( 'Point', ['x', 'y'])
P = Point(1, 2)
print (P.x) # >>> 1
print(P.y) # >>> 2PP = Point(x=3, y=4)
print(PP.x) ## >>> 3
print(PP.y) ## >>> 4
namedtuple
的属性值不能更改,否者会报错。比如设置PP.x=10
这样的语句就会报错。
map、reduce、filter函数
map
、reduce
、filter
是针对序列操作的函数。
map
map(function, iterable, ...)
给序列的每个元素应用一个函数,返回一个迭代器。
map
返回的并不是一个真正的list
,而是一个可遍历的对象。想要看起内容的话,可以使用list
将函数其转化为一个list
。
reduce
reduce(function, iterable)
使用function(x, y)
函数,将序列缩减成1个元素结果。
filter
filter(function, iterable)
使用返回bool
的function
对序列过滤,返回满足条件的结果。
filter(function, iterable)
的返回result
也是一个可遍历的对象,我们可以使用list
将其转化为可打印的对象。
groupby函数
groupby
是类似SQL
中groupby
的聚合函数(但只会相邻相同元素聚合)。按照指定key
进行数据分组,语法:
groupby(iterable, key=None)
构建一个数据,是个list,每个list里面是一个字典,包括文章的id、title、和分类。
如果想要按照category
将文章聚合在一起,怎么操作呢?当然可以使用for
循环加一个字典实现,但是groupby
会更方便一点。
但是python
中的groupby
只能实现相邻元素相同的聚合,因此我们首先需要对它进行排序:
使用groupby
聚合:
Python进阶(九)常用高级函数Counter、defaultdict、nametuple、map、reduce、filter、groupby相关推荐
- Python中字符串常用处理函数
** Python中字符串常用处理函数 ** 1.len( )函数 用len( )函数计算字符串的长度 2.strip( )函数 删除字符串两边的空白符(包括:'\n'.'\t'.'\r') 注:只能 ...
- python数学函数_「分享」关于Python整理的常用数学函数整理
原标题:「分享」关于Python整理的常用数学函数整理 1.函数说明 abs(number)返回数字的绝对值,如abs(-10)返回10 pow(x,y[,z]) 返回x的y次幂(所得结果对z取模), ...
- python内置函数map reduce filter详解,面试必备知识
面试时候经常会考到 map reduce filter 这三个内置函数的使用 map() 函数 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调 ...
- py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())
#py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...
- Swift-高阶函数如map,reduce,filter的一些总结
Swift 这个语言,速度快,更加安全,代码少,易于阅读维护. 所以一些高阶函数在项目实际使用中也是蛮方便的总结如下: 高阶函数的定义:一个函数如果可以以某个函数作为参数,或者返回值,那么这个函数就称 ...
- Python高级函数Counter、defaultdict、map、reduce、filter使用
在这里为大家介绍一下Python非常实用的Counter.defaultdict.map.reduce.filter的函数使用,提高大家在平时使用Python的效率 计数器函数 Counter 带默认 ...
- [python 进阶] 第7章 函数装饰器和闭包
文章目录 7.1 装饰器基础知识 7.2 Python何时执行装饰器 7.3 使用装饰器改进"策略" 7.4 变量作用域(global) 备注 -比较字节码(暂略) 7.5 闭包 ...
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊...
函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...
- 我对python的理解_python高级函数以及我对python的理解
常见的高级函数:lambda.map.reduce.filter.list comprehension lambda 匿名函数,限制一个表达式 m = lambda x,y:x+y # 5 m(2,3 ...
- 【Python】收集的高级函数、功能
说明:本文更新顺序是从下到上,最新的函数更新在开头. np.log log默认以e为底,log10, log2, log1p, emath.log dict对象的keys()和values()返回的值 ...
最新文章
- java简单线程池实例代码
- Android点击事件之多点触摸与手势识别
- 网络营销期间选用冷门关键词网络营销效果会好吗?
- SourceTree -- Installation has failed
- TCP协议经典书籍--TCP/IP详解
- 用js控制选择CheckBoxList
- shell之常用工具的使用
- 后悔贪心+P2949 [USACO09OPEN]Work Scheduling G
- “十步一杀” 干掉你的职场压力
- 抓包工具 tcpdump tshark
- Objective-C 与JAVA的SHA1/HmacSHA1加密算法实现
- javascript模块化编程思想(转载网上专家)Javascript模块化编程(一)
- 第五章第二十八题(显示每月第一天是星期几)(Display the first days of each month)
- Android中仿微信选择图片并展示在RecyclerView中
- ROS中Remap标签详解,举例说明其两种用法
- Qt 之 QSS(黑色炫酷)
- 把这本书讲给更多人(中):两次历史上著名的谋杀案?
- 大数据项目之电商分析平台(2)
- JupyterLab中Kernel相关使用技巧和报错解决
- 计算机图形学 opengl版本 第三版------胡事民 第三章更多的绘图工具
热门文章
- hdu 1698 Just a Hook
- 二叉树中和为某一值的路径(三)(C++)
- linux系统中命令执行的优先级以及命令格式
- mysql 使用注意
- 【对讲机的那点事】安装中继台天馈系统如何制作同轴电缆BNC接头?
- android创建项目,并开发项目。
- 《中国人工智能学会通讯》——第12章 12.1 新世纪知识工程—— 在哪里跨越
- 谈谈大型分布式网站架构技术总结
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏的解决方案
- string-indexOf、substring、split