比较三种判断字符是否为大写字母方式的效率

和朋友闲谈聊到判断字符是否为大写字母,于是随手写出来看了一下耗时统计的比较。
想到了三种:

## 方法A
x in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' #如果返回Ture则x为大写

## 方法B
x>='A' and x<='Z' #如果返回Ture则x为大写

## 方法C
x.isupper() #如果返回Ture则x为大写

哪个效率最高呢?那么来写点代码跑一下好啦…

from timeit import timeit
import matplotlib.pyplot as plt
%matplotlib inline
## 方法A 
cost_time_A = {}
for xx in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
    cost_time_A[xx] = timeit("'"+xx+"'"+" in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'",number=10000000)
#     print(cost_time_A[xx],xx)
# print('===========')

## 方法B
cost_time_B = {}
for xx in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':  
    cost_time_B[xx] = timeit("'"+xx+"'"+">='A' and "+"'"+xx+"'"+"<='Z'",number=10000000)
#     print(cost_time_B[xx],xx)
# print('===========')

## 方法C
cost_time_C = {}
for xx in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
    cost_time_C[xx] = timeit("'"+xx+"'"+".isupper()",number=10000000)
#     print(cost_time_C[xx],xx)
# print('===========')

### 可视化
plt.ylim(0,1)
plt.plot(cost_time_A.keys(),cost_time_A.values(),label='A')
plt.plot(cost_time_A.keys(),cost_time_B.values(),label='B')
plt.plot(cost_time_A.keys(),cost_time_C.values(),label='C')
plt.legend(loc='best')
plt.show()

## 结论:选用“方法A”,效率更高

在这里插入图片描述

结论选用“方法A”,会比其他两个好点!

猜你喜欢

转载自blog.csdn.net/CallMeYunzi/article/details/83308878