int() 或 dict 用于单个数字字符串到 int 的转换
int() or dict for single digit string to int conversions
我正在尝试将单个数字的字符串转换为整数。例如,如果我有 "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()
函数更快吗?如果一个更快,它是否足够快以决定我应该使用哪一个?
让我们做一个快速的 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
所以在这种情况下,基于字典的版本略微更快。就个人而言,不值得努力。使用 int()
您可以从负数、大于数字 9 等进行转换。而且它更具可读性。
我正在尝试将单个数字的字符串转换为整数。例如,如果我有 "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()
函数更快吗?如果一个更快,它是否足够快以决定我应该使用哪一个?
让我们做一个快速的 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
所以在这种情况下,基于字典的版本略微更快。就个人而言,不值得努力。使用 int()
您可以从负数、大于数字 9 等进行转换。而且它更具可读性。