python如何计数:四种常用写法对比

python如何计数,主流有for循环自增、count()方法、collections.Counter、enumerate四种写法,count()适合统计单个元素出现次数,Counter适合批量统计所有元素频次,自增变量适合自定义计数逻辑,enumerate适合遍历同时获取下标,count()和Counter仅支持可迭代对象,不适合实时流式持续累加计数场景。

python如何计数:基础自增计数

你先定义初始值为0的计数变量,在循环内部满足条件时执行加1操作,这是自由度最高的计数方式,过滤条件、计数时机都可以自己控制。代码示例:count_num=0;foriin[1,2,2,3]:ifi==2:count_num+=1,运行结束后count_num就是目标数量。这种写法可以搭配if判断,只统计符合规则的数据,适合需要复杂筛选逻辑的业务,比如统计大于5的数字、包含指定字符的字符串。

控制好初始值位置,变量写在循环外面才会持续累加,写在循环内部每次都会重置成0,得不到正确结果。

python如何计数:count()方法统计单元素

列表、字符串、元组都自带count()方法,调用格式是对象.count(目标元素),一行代码直接返回该元素出现次数,不需要额外写循环。示例:lst=["a","b","a"];res=lst.count("a"),结果为2。它只能查询一个元素,想要一次性拿到全部元素频次,重复多次调用会重复遍历数据,数据量大的时候效率偏低。

python如何计数:Counter批量统计频次

Counter属于collections模块,导入之后直接传入可迭代对象,自动生成键值对,键是元素,值是对应计数。示例代码:fromcollectionsimportCounter;data=[1,1,2,3,3,3];cnt=Counter(data),读取单个元素计数用cnt[1]。Counter自带most_common(n),可以直接取出出现频次最高的n个元素,做词频统计、日志关键词计数时很省事。

方法适合场景性能特点
自增变量自定义筛选、流式计数可控,需要手写循环
count()只查单个元素频次简单,多次查询会重复遍历
Counter一次性统计全部元素便捷,底层优化较好
enumerate遍历同时获取下标序号不统计元素频次,只生成序号

python如何计数:enumerate生成序号

enumerate不会统计元素重复次数,它用来给遍历项绑定序号,默认从0开始,你可以指定start参数修改起始数字。示例:foridx,valinenumerate(["x","y"],start=1):print(idx,val),输出1x、2y。读取文件行号、给列表条目编顺序时优先选它,不要和频次计数功能混淆。

读取超大文件时,不要一次性把全部内容载入列表再用count或Counter,逐行读取搭配自增变量计数,内存占用会明显更低。

None、浮点数、嵌套列表这类对象都可以作为计数目标,但嵌套列表无法直接传给Counter,会抛出类型错误,你需要先把嵌套结构展平再统计。

字符串计数和列表规则一致,"abac".count("a")可以直接统计字符出现次数,支持多字符子串统计,"ababa".count("aba")结果为2,匹配时不会重叠截取。

Python官方文档3.10版本对Counter的相等判断逻辑做了调整,计数为0的键不再参与相等对比,升级版本后对比计数结果时需要留意这个差异。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于python如何计数的文章欢迎访问:百科