报数,报数啦!(讲义)
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,使用起来非常方便、高效!
还记得那年在树下的军训吗?教官说:第一排报数。你惊讶地看着教官,教官又大声说了一遍:报数!于是,你极不情愿地转过身去抱住了树!
报数,报数啦!(讲义)相关推荐
- c语言有n个人围成一圈用指针,C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子...
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2021/05/20 00:22:21 C语言 有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子 有n个人围成一圈,按 ...
- 面试题 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现
设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止.现要求按出圈次序 ...
- lintcode :Count and Say 报数
题目: 报数 报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数.如下所示: 1, 11, 21, 1211, 111221, ... 1 读作 "one 1" -> ...
- 选班长的问题?Java:解决循环报数
题目: 按照一定的规则选举班长,规则如下:将班里的N个人围城一圈,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,然后从下一个人重新开始,最后留下的那个人就被选为班长,请问按照这个规则,选出 ...
- 领扣LintCode算法问题答案-420. 报数
领扣LintCode算法问题答案-420. 报数 目录 420. 报数 鸣谢 420. 报数 报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数.如下所示: 1, 11, 21, 1211, ...
- 求中位数中回文数之和C语言,一些算法题及答案
1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这 ...
- python解决LeetCode精选Hot100
1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...
- 丢手帕问题 java_丢手帕问题,java实现
今天偶然发现一个很经典的算法问题:丢手帕问题.问题的具体描述是:N个人围成一圈,然后从第A个人开始报数(报数从1开始).报数为B的人出列,然后后面的人从新开始报数,请问,最后一个人是多少号. 刚开始觉 ...
- 简单算法之丢手绢游戏/c++
游戏规则:参加丢手绢的人围成一个圈,从任意一个人开始(游戏中可以随意指定,但是算法中默认发起者为1),第一个人开始报数,随后按照规定时针方向开始进行,下一个继续报数(报数规则为:从1开始递增报数),如 ...
最新文章
- python3项目-python3搭建Django项目
- wireshark 配 filddler 手机抓包
- 副业,程序猿的第二职业,聊聊我是怎么做的
- 科技推动时代发展,浅谈IT技术如何改善数据中心运维管理
- 有趣的linux指令
- 使用threejs点云秀出酷炫的图片效果(一)
- NET框架下如何使用PaddleOCRSharp
- 数学和古典诗词的意境
- html滚动选择框代码,如何使用最简单纯Css代码美化checkbox复选框、radios单选框和滑动按钮...
- python中列表的排序方法_在python中对小列表进行排序的最快方法
- ssh之雇员管理系统(4)-改进的hibernate测试
- BZOJ 1304: [CQOI2009]叶子的染色
- VC++ (MFC)调用 C#生成DLL的方法
- Linux的LILO引导程序,linux —— 启动引导程序 lilo 与 grub(示例代码)
- 程维任正非马化腾马云们在为柳传志呼唤什么?
- linux mint 蓝牙驱动,Mint 使用蓝牙鼠标问题
- 【C库函数】strlen函数详解
- 华为暑期实习一面凉经
- 省协湖北中心 计算机科学与技术,国家知识产权局专利局专利审查协作湖北中心...
- 如何批量调整图片亮度和对比度?