1. Counter的创建和基本用法

from collections import Counter# 传列表创建:统计大家的出生年份分布情况
a = Counter([1991, 1993, 1992, 1992, 1993, 1993])
# 传字符串创建:统计选择题选项分布情况
b = Counter('AADCABDDAC')print('a:', a)
print('b:', b)print('a的前二名:', a.most_common(2))# elements()从Counter对象恢复元素列表情况
# 注意:不包括元素计数小于等于0的元素
print('b中的元素列表:', list(b.elements()))# values()返回各元素的计数/值列表
print('b中的元素值列表:', b.values(), '合计:', sum(b.values()))
a: Counter({1993: 3, 1992: 2, 1991: 1})
b: Counter({'A': 4, 'D': 3, 'C': 2, 'B': 1})
a的前二名: [(1993, 3), (1992, 2)]
b中的元素列表: ['A', 'A', 'A', 'A', 'D', 'D', 'D', 'C', 'C', 'B']
b中的元素值列表: dict_values([4, 3, 2, 1]) 合计: 10

2. “+”、“-”、“&”、“|”运算

# 传键值对创建:对坐标空间分布进行计算
a = Counter(X=3, Y=2, Z=1)
b = Counter(X=4, Y=-3)
print('a:    ', a)
print('b:    ', b)# 求和:会排除结果小于等于0的元素。
print('a + b:', a + b)# 求差:会排除结果小于等于0的元素。
print('a - b:', a - b)# 求交集:返回两者共性元素的最小值(不包括小于等于0的元素)
print('a & b:', a & b)# 求并集:返回全部元素的最大值(不包括小于等于0的元素)
print('a | b:', a | b)
a:     Counter({'X': 3, 'Y': 2, 'Z': 1})
b:     Counter({'X': 4, 'Y': -3})
a + b: Counter({'X': 7, 'Z': 1})
a - b: Counter({'Y': 5, 'Z': 1})
a & b: Counter({'X': 3})
a | b: Counter({'X': 4, 'Y': 2, 'Z': 1})

3.1 “+”与“update”的区别

a = Counter(X=3, Y=2, Z=1)
b = Counter(X=4, Y=-3)
print('a:     ', a)
print('b:     ', b)# 会排除结果小于等于0的元素。
print('a + b: ', a + b)# 直接对a进行修改,求得的“和”包含小于等于0的元素
a.update(b)
print('update:', a)
a:      Counter({'X': 3, 'Y': 2, 'Z': 1})
b:      Counter({'X': 4, 'Y': -3})
a + b:  Counter({'X': 7, 'Z': 1})
update: Counter({'X': 7, 'Z': 1, 'Y': -1})

3.2 “-”与“subtract”的区别

a = Counter(X=3, Y=2, Z=1)
b = Counter(X=4, Y=-3)
print('a:       ', a)
print('b:       ', b)# 会排除结果小于等于0的元素。
print('a - b:   ', a - b)# 直接对a进行修改,求得的“差”包含小于等于0的元素
a.subtract(b)
print('subtract:', a)
a:        Counter({'X': 3, 'Y': 2, 'Z': 1})
b:        Counter({'X': 4, 'Y': -3})
a - b:    Counter({'Y': 5, 'Z': 1})
subtract: Counter({'Y': 5, 'Z': 1, 'X': -1})

3.3 一个小技巧

a = Counter(X=0, Y=1, Z=-1)
# 快速除去Counter对象中值小于等于0的元素
a += Counter()  # 或 a -= Counter()print('a:', a)
a: Counter({'Y': 1})

总结:对列表、元组、字典、字符串等可迭代对象中的元素进行统计、计算时,千万别忘了Counter,使用起来非常方便、高效!

还记得那年在树下的军训吗?教官说:第一排报数。你惊讶地看着教官,教官又大声说了一遍:报数!于是,你极不情愿地转过身去抱住了树!

报数,报数啦!(讲义)相关推荐

  1. c语言有n个人围成一圈用指针,C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子...

    来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2021/05/20 00:22:21 C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 有n个人围成一圈,按 ...

  2. 面试题 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现

    设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止.现要求按出圈次序 ...

  3. lintcode :Count and Say 报数

    题目: 报数 报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数.如下所示: 1, 11, 21, 1211, 111221, ... 1 读作 "one 1" -> ...

  4. 选班长的问题?Java:解决循环报数

    题目: 按照一定的规则选举班长,规则如下:将班里的N个人围城一圈,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,然后从下一个人重新开始,最后留下的那个人就被选为班长,请问按照这个规则,选出 ...

  5. 领扣LintCode算法问题答案-420. 报数

    领扣LintCode算法问题答案-420. 报数 目录 420. 报数 鸣谢 420. 报数 报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数.如下所示: 1, 11, 21, 1211, ...

  6. 求中位数中回文数之和C语言,一些算法题及答案

    1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这 ...

  7. python解决LeetCode精选Hot100

    1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...

  8. 丢手帕问题 java_丢手帕问题,java实现

    今天偶然发现一个很经典的算法问题:丢手帕问题.问题的具体描述是:N个人围成一圈,然后从第A个人开始报数(报数从1开始).报数为B的人出列,然后后面的人从新开始报数,请问,最后一个人是多少号. 刚开始觉 ...

  9. 简单算法之丢手绢游戏/c++

    游戏规则:参加丢手绢的人围成一个圈,从任意一个人开始(游戏中可以随意指定,但是算法中默认发起者为1),第一个人开始报数,随后按照规定时针方向开始进行,下一个继续报数(报数规则为:从1开始递增报数),如 ...

最新文章

  1. python3项目-python3搭建Django项目
  2. wireshark 配 filddler 手机抓包
  3. 副业,程序猿的第二职业,聊聊我是怎么做的
  4. 科技推动时代发展,浅谈IT技术如何改善数据中心运维管理
  5. 有趣的linux指令
  6. 使用threejs点云秀出酷炫的图片效果(一)
  7. NET框架下如何使用PaddleOCRSharp
  8. 数学和古典诗词的意境
  9. html滚动选择框代码,如何使用最简单纯Css代码美化checkbox复选框、radios单选框和滑动按钮...
  10. python中列表的排序方法_在python中对小列表进行排序的最快方法
  11. ssh之雇员管理系统(4)-改进的hibernate测试
  12. BZOJ 1304: [CQOI2009]叶子的染色
  13. VC++ (MFC)调用 C#生成DLL的方法
  14. Linux的LILO引导程序,linux —— 启动引导程序 lilo 与 grub(示例代码)
  15. 程维任正非马化腾马云们在为柳传志呼唤什么?
  16. linux mint 蓝牙驱动,Mint 使用蓝牙鼠标问题
  17. 【C库函数】strlen函数详解
  18. 华为暑期实习一面凉经
  19. 省协湖北中心 计算机科学与技术,国家知识产权局专利局专利审查协作湖北中心...
  20. 如何批量调整图片亮度和对比度?

热门文章

  1. python字典保存用户名和密码_Python开发之用户密码存储
  2. python编写同步欧氏距离轨迹压缩_基于相对同步欧氏距离筛选的在线GPS轨迹数据压缩算法.PDF...
  3. 微信聊天记录提取及分析(wordcloud+pyecharts)
  4. NOIP2018复习计划
  5. 如何高效检查钢网开口?
  6. PhysX 物理引擎研究(一)源码编译
  7. 在农村干什么挣钱,小加工让你快速致富
  8. 数据增强:随机擦除Random erasing
  9. 介绍项目前期调研、需求分析阶段的工作
  10. 计算机组成原理作业十一