我正在尝试将一位数字字符串转换为整数。例如,如果我有"2" <-- str
,我想将其更改为2 <-- int
。我知道python中的int()
函数可以为我做到这一点,但是我想知道我是否制作了这样的字典,
strToNumDict{
"0": 0
"1": 1
"2": 2
"3": 3
"4": 4
"5": 5
"6": 6
"7": 7
"8": 8
"9": 9
}
使用该词典转换单个数字是否比int()
函数更快?而且如果速度更快,是否足够快以至于我应该使用哪一个就有所作为?
答案 0 :(得分:0)
让我们做一个快速的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等)进行转换。它更具可读性。