python-3.x - int() 或 dict 用于单个数字字符串到 int 的转换
问题描述
我正在尝试将一位数字符串转换为整数。例如,如果我"2" <-- str
想将其更改为2 <-- int
. 我知道int()
python中的函数可以为我做到这一点,但我想知道我是否制作了这样的字典,
strToNumDict{
"0": 0
"1": 1
"2": 2
"3": 3
"4": 4
"5": 5
"6": 6
"7": 7
"8": 8
"9": 9
}
使用这个字典转换个位数会比int()
函数快吗?如果一个更快,它是否足够快来改变我应该使用哪个?
解决方案
让我们做一个快速的timeit
基准测试。我们随机生成一位数字并尝试将其转换为整数(x 1_000_000 次):
strToNumDict = {
"0": 0,
"1": 1,
"2": 2,
"3": 3,
"4": 4,
"5": 5,
"6": 6,
"7": 7,
"8": 8,
"9": 9
}
def convert1(s):
return strToNumDict[s]
def convert2(s):
return int(s)
import timeit
import random
digits = list('0123456789')
t1 = timeit.timeit(lambda: convert1(random.choice(digits)), number=1_000_000)
t2 = timeit.timeit(lambda: convert2(random.choice(digits)), number=1_000_000)
print(t1)
print(t2)
在我的机器上打印(AMD 2400G,Python 3.6.8):
0.6220340259897057
0.727682675991673
因此,在这种情况下,基于 dict 的版本稍微快一些。就个人而言,不值得努力。随着int()
您从负数转换,超过数字 9 等。而且它更具可读性。
推荐阅读
- arrays - 如何使用 MongoDB 查询将所有记录集推送到一个数组中
- python - IndexError: , 在这种情况下,如何在不定义方法的情况下检查列表中的最后一个元素是否为空?
- python - 媒体时长
- python - 烧瓶后方法 405
- javascript - 应用 jQuery 掩码不支持 0 作为占位符的默认值
- python - 如何在 pydatatable 中选择使用未格式化名称创建的列?
- vue.js - 如何在 Vue js 的弹出窗口中显示购物车项目?
- python-3.6 - 在多个列表中查找公共数字的函数
- typescript - 如何在 Deno 中使用 RS256 签名验证 JWT?
- angular - Angular 9:不允许加载本地资源:file:///D:/desktopbackup/grains/index.jpg