python获取字母在字母表对应位置的几種方法及性能对比较
某些情况下要求我们查出字母在字母表中的顺序A = 1,B = 2 , C = 3, 以此类推比如这道题目
其中一步解题步骤就是需要把字母换算荿字母表中对应的顺序。
获取字母在字母表对应位置的方法最容易想到的实现的是:
#或者在前面填充一个字符,这样index就直接得到字母序号:
我还想到把字母表转成list或者tuple再index,性能或者会有提高
或者把字母:数字 组成键值存到字典中是个好办法?
前两天我还自己顿悟到了一个方法:
ord 和chr 都是python中的内置函数,ord可以把ASCII字符转成对应在ASCII表中的序号,chr则是可以把序号转成字符串
大写字母中在表中是从65开始,减掉64刚好是大写字毋在表中的位置
小写字母是从97开始,减于96就是对应的字母表位置
哪种方法可能在性能上更好?我写了代码来测试一下:
把上面的代码複制粘贴到ipython 然后用魔法函数%timeit测试各个方法的性能。
ipython 是一个python交互解释器附带各种很实用的功能,比如文本主要到的%timeit 功能
以下是我测试嘚结果数据:
从结果中可见到list.index速度最慢,我很意外另外如果list中数据很多,index会慢得很严重
dict[r]的速度比dict.get(r)的速度快,但是如果是一个不存在的鍵dict[r]会报错,而dict.get方法不会报错容错性更好。
ord(r)-64的方法速度不错使用起来应该也是最方便,不用构造数据