python统计字符串中大小写字符个数的性能实测与分析

给定一个字符串,统计字符串中大写字符个数,有如下三种方法:

python 复制代码
# method1
s1 = len(re.findall(r'[A-Z]',content))
# method2
s2 = sum(1 for c in content if c.isupper())
# method3
s3 = 0
for c in content:
    if c.isupper()==True:
        s3+=1

经过多次实测后,方法1是最快的,方法3是最慢的。下面是其中某一次的实际时间消耗:

复制代码
(method1) upper char count by re:0.11256217956542969s
(method2) upper char count by for-sum:0.36724019050598145s
(method3) upper char count by for-loop:0.5580060482025146s

改为统计字符串中大写字符个数和小写字符个数后:

python 复制代码
s11 = len(re.findall(r'[A-Z]',content))
s12 = len(re.findall(r'[a-z]',content))


s21 = sum(1 for c in content if c.isupper())
s22 = sum(1 for c in content if c.isupper())


s3 = 0
s4 = 0
for c in content:
    if c.isupper()==True:
        s3+=1
    else:
        s4+=1

性能也满足上面的规律:

复制代码
upper char count by re:0.40007758140563965s
upper char count by for-sum:0.6471347808837891s
upper char count by for-loop:0.918128252029419s

原因分析:

  • 正则表达式在匹配上是有算法优化过的
  • 正则只处理26个英文字母,而其他方法要处理所有字符(包括特殊符号等等),这样其他方法处理的字符数量比正则这种方法要多
相关推荐
CLX05052 分钟前
如何在 WordPress AMP 网站中为特定模板禁用 AMP 渲染
jvm·数据库·python
砚底藏山河5 分钟前
python、JavaScript 、JAVA,定制化数据服务,助力业务高效落地
java·javascript·python
神明9316 分钟前
如何实现SQL动态字段选择查询_利用反射或动态拼接字符串
jvm·数据库·python
洛的地理研学13 分钟前
Python下载并处理MOD13A3植被指数数据
开发语言·python
humcomm15 分钟前
Java 新特性2026年5月速览
java·开发语言
m0_7335654616 分钟前
golang如何实现RabbitMQ死信队列_golang RabbitMQ死信队列实现教程
jvm·数据库·python
xiao_li_ya17 分钟前
C++学习日记1(`*`的理解、const关键词)
开发语言·c++
weixin_4440129322 分钟前
CSS定位如何实现模态框垂直居中_使用负边距或transform
jvm·数据库·python
2301_7838486526 分钟前
Go 中实现高效图最大团划分的实践与边界分析
jvm·数据库·python
2401_8844541527 分钟前
C#怎么实现Socket心跳包 C#如何在TCP Socket通信中设计心跳机制检测连接状态【网络】
jvm·数据库·python