文章目录

  • Counter计数器
  • defaultdict
  • namedtuple
  • map、reduce、filter函数
    • map
    • reduce
    • filter
  • groupby函数

  使用高级函数在很多时候会减少自己的代码开发。

Counter计数器

  Counter是一个简单的计数器,例如统计字符出现的个数。Counter类继承dict类,所以它能使用dict类里面的方法。

  1. 对iterable进行计数

  使用Counter可以很方便地统计出每个元素出现的次数:

  上述实现当然可以使用dict或者for循环来实现,但是使用Counter会更方便一点。

  1. update往Counter新增内容

  使用update可以往Counter新增内容

  1. 像字典一样输出key/value

  可以像字典一样,遍历输出key/value

  1. 输出最高频率的数据

  除此之外还有一个功能,很方便的输出最高频率的数据,比如找到出现次数最高的前三个的内容:

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可以是strintlistset,可以省略初始化。

  1. 默认的value为int类型

  默认的valueint类型,直接加数字:

  1. 设置value为None
import collections
x = collections.defaultdict(lambda : 'N/A')
x['key1'] = 'abc'
print(x['key1']) # >>> abc
print(x['key2']) # >>> N/A
  1. 默认的value为list类型

  默认的valuelist类型,直接添加元素:

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函数

  mapreducefilter是针对序列操作的函数。

map

  map(function, iterable, ...)给序列的每个元素应用一个函数,返回一个迭代器。

  map返回的并不是一个真正的list,而是一个可遍历的对象。想要看起内容的话,可以使用list将函数其转化为一个list

reduce

  reduce(function, iterable)使用function(x, y)函数,将序列缩减成1个元素结果。

filter

  filter(function, iterable)使用返回boolfunction对序列过滤,返回满足条件的结果。

  filter(function, iterable)的返回result也是一个可遍历的对象,我们可以使用list将其转化为可打印的对象。

groupby函数

  groupby是类似SQLgroupby的聚合函数(但只会相邻相同元素聚合)。按照指定key进行数据分组,语法:

  • groupby(iterable, key=None)

构建一个数据,是个list,每个list里面是一个字典,包括文章的id、title、和分类。

  如果想要按照category将文章聚合在一起,怎么操作呢?当然可以使用for循环加一个字典实现,但是groupby会更方便一点。

  但是python中的groupby只能实现相邻元素相同的聚合,因此我们首先需要对它进行排序:

  使用groupby聚合:

Python进阶(九)常用高级函数Counter、defaultdict、nametuple、map、reduce、filter、groupby相关推荐

  1. Python中字符串常用处理函数

    ** Python中字符串常用处理函数 ** 1.len( )函数 用len( )函数计算字符串的长度 2.strip( )函数 删除字符串两边的空白符(包括:'\n'.'\t'.'\r') 注:只能 ...

  2. python数学函数_「分享」关于Python整理的常用数学函数整理

    原标题:「分享」关于Python整理的常用数学函数整理 1.函数说明 abs(number)返回数字的绝对值,如abs(-10)返回10 pow(x,y[,z]) 返回x的y次幂(所得结果对z取模), ...

  3. python内置函数map reduce filter详解,面试必备知识

    面试时候经常会考到 map reduce filter 这三个内置函数的使用 map() 函数 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调 ...

  4. py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())

    #py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...

  5. Swift-高阶函数如map,reduce,filter的一些总结

    Swift 这个语言,速度快,更加安全,代码少,易于阅读维护. 所以一些高阶函数在项目实际使用中也是蛮方便的总结如下: 高阶函数的定义:一个函数如果可以以某个函数作为参数,或者返回值,那么这个函数就称 ...

  6. Python高级函数Counter、defaultdict、map、reduce、filter使用

    在这里为大家介绍一下Python非常实用的Counter.defaultdict.map.reduce.filter的函数使用,提高大家在平时使用Python的效率 计数器函数 Counter 带默认 ...

  7. [python 进阶] 第7章 函数装饰器和闭包

    文章目录 7.1 装饰器基础知识 7.2 Python何时执行装饰器 7.3 使用装饰器改进"策略" 7.4 变量作用域(global) 备注 -比较字节码(暂略) 7.5 闭包 ...

  8. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊...

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  9. 我对python的理解_python高级函数以及我对python的理解

    常见的高级函数:lambda.map.reduce.filter.list comprehension lambda 匿名函数,限制一个表达式 m = lambda x,y:x+y # 5 m(2,3 ...

  10. 【Python】收集的高级函数、功能

    说明:本文更新顺序是从下到上,最新的函数更新在开头. np.log log默认以e为底,log10, log2, log1p, emath.log dict对象的keys()和values()返回的值 ...

最新文章

  1. java简单线程池实例代码
  2. Android点击事件之多点触摸与手势识别
  3. 网络营销期间选用冷门关键词网络营销效果会好吗?
  4. SourceTree -- Installation has failed
  5. TCP协议经典书籍--TCP/IP详解
  6. 用js控制选择CheckBoxList
  7. shell之常用工具的使用
  8. 后悔贪心+P2949 [USACO09OPEN]Work Scheduling G
  9. “十步一杀” 干掉你的职场压力
  10. 抓包工具 tcpdump tshark
  11. Objective-C 与JAVA的SHA1/HmacSHA1加密算法实现
  12. javascript模块化编程思想(转载网上专家)Javascript模块化编程(一)
  13. 第五章第二十八题(显示每月第一天是星期几)(Display the first days of each month)
  14. Android中仿微信选择图片并展示在RecyclerView中
  15. ROS中Remap标签详解,举例说明其两种用法
  16. Qt 之 QSS(黑色炫酷)
  17. 把这本书讲给更多人(中):两次历史上著名的谋杀案?
  18. 大数据项目之电商分析平台(2)
  19. JupyterLab中Kernel相关使用技巧和报错解决
  20. 计算机图形学 opengl版本 第三版------胡事民 第三章更多的绘图工具

热门文章

  1. hdu 1698 Just a Hook
  2. 二叉树中和为某一值的路径(三)(C++)
  3. linux系统中命令执行的优先级以及命令格式
  4. mysql 使用注意
  5. 【对讲机的那点事】安装中继台天馈系统如何制作同轴电缆BNC接头?
  6. android创建项目,并开发项目。
  7. 《中国人工智能学会通讯》——第12章 12.1 新世纪知识工程—— 在哪里跨越
  8. 谈谈大型分布式网站架构技术总结
  9. LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏的解决方案
  10. string-indexOf、substring、split