Python count()函数详解
「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》
count
count() 是Python的内置函数,可以「统计」字符串里指定「字符」或指定字符串出现的「次数」。
语法
String.count( str, start, end )
参数
- str :(必选)指定字符或字符串
- start :(可选,整型)开始的索引,默认0
- end :(可选,整型)结束的索引,默认最后一个位置
返回值
- int类型,返回出现的次数
实例:统计字符 ‘a’ 在字符串 ‘abcabcabc’ 中出现的次数
print('abcabcabc'.count('a'))
输出:
3
在字符串中搜索时,搜索的内容只能是「字符串类型」,否则会报错 TypeError: must be str
1、指定搜索位置
start 和 end 参数可以设置搜索的「范围」,含头不含尾 [start, end)
start 参数必须是「整型」或「不设置」,默认值是0
end 参数必须是「整型」或「不设置」,默认值是 len(string),字符串的长度,也就是最后一个位置
count() 的参数不通过参数名来指定:
- 如果只给「一个参数」,就默认赋值给str参数
- 如果只给「两个参数」,就按顺序赋值给str 和 start 参数
- 如果给了「三个参数」,就按顺序赋值给str 、start、end参数
实例:从第3个字符开始,搜索字符 ‘a’ 在字符串 ‘abcabcabc’ 中出现的次数
print('abcabcabc'.count('a', 3))
输出:
2
实例:在字符串的3~6位置,搜索字符 ‘a’ 在字符串 ‘abcabcabc’ 中出现的次数
print('abcabcabc'.count('a', 3, 6))
输出:
1
2、参数为负数
start 和 end 参数可以为「负数」,同样含头不含尾[-start, -end)
start 为负数时,意思是从「右边」第几个位置「开始」,这个位置不是索引,从1开始计算。
print('aaabbbccc'.count('a', -6))print('aaabbbccc'.count('a', -7))
输出:
01
end 为负数时,意思是从「右边」第几个位置「结束」,同样是从1开始计算。
比如下面这个案例,设置范围从右边第6个开始,到右边第1个结束
print('aaabbbccc'.count('c', -6, -1))
输出:
2
当负数超过字符串的「长度」时,会从0开始计算。
比如字符串只有8个字符,但start 参数的值为-10,count()就会让它变得 “不生效”。
print('aaabbbccc'.count('c', -10))print('aaabbbccc'.count('c'))
输出:
33
3、列表的count()
列表也有count() ,可以统计指定「元素」在列表中出现的「次数」,虽然函数名字一样,但用法却不同
语法
list.count( element )
参数
- element:需要统计的元素
返回值
- int类型,返回元素出现的次数
实例:统计元素 1 在列表中出现的次数
print([1, 2, 1, 2].count(1))
输出:
2
4、元祖的count()
元组相当于只读列表,元组的 count() 和 列表的 count() 用法相同
语法
tuple.count( element )
参数
- element:需要统计的元素
返回值
- int类型,返回元素出现的次数
实例:统计元素 1 在元组中出现的次数
print((1, 2, 1, 2).count(1))
输出:
2
5、其他数据类型的count()
不同数据类型的 count() 语法是不一样的:
字符串、字节串、字节数组的count()可以指定开始和结束的位置;
列表、元组、等差数列的count()只能搜索指定的元素。
- 字符串:
string.count( str, start, end )
- 字节串:
bytes.count( str, start, end )
- 字节数组:
bytearray.count( str, start, end )
- 列表:
list.count( element )
- 元组:
tuple.count( element )
- 等差数列:
range.count( element )
6、布尔类型
布尔类型是特殊的,True可以匹配到1,False可以匹配到0,具体的可以参考以下案例:
print((True, False).count(True))print((True, False).count(1))print((True, False).count(0))
输出:
111
来源地址:https://blog.csdn.net/wangyuxiang946/article/details/131453407
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341