「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》
count
1、指定搜索位置2、参数为负数3、列表的count()4、元祖的count()5、其他数据类型的count()6、布尔类型
count() 是Python的内置函数,可以「统计」字符串里指定「字符」或指定字符串出现的「次数」。
语法
String.count( str, start, end )
参数
str :(必选)指定字符或字符串start :(可选,整型)开始的索引,默认0end :(可选,整型)结束的索引,默认最后一个位置返回值
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