关于isdecimal()、isdigit()、isnumeric()的效率问题
本帖最后由 tommyyu 于 2022-1-25 16:43 编辑isdecimal()、isdigit()、isnumeric()都是判断字符串是否为数字构成的字符串方法。区别如下(小甲鱼视频里有):
| isdecimal()的返回值| isdigit() 的返回值| isnumeric()的返回值|
+----------------------------------------------------------+--------------------------+---------------------+-------------------------|
|判断由数字组成的字符串 (例:"123") | True | True | True |
+----------------------------------------------------------+--------------------------+----------------------+------------------------|
|判断由2等符号组成的字符串(例:"22") | False | True | True |
+----------------------------------------------------------+--------------------------+----------------------+------------------------|
|判断由罗马数字组成的字符串(例:"ⅠⅡⅢ") | False | False | True |
+----------------------------------------------------------+--------------------------+---------------------+-------------------------|
|判断由汉字组成的字符串(例:"一壹") | False | False | True |
+----------------------------------------------------------+-------------------------+---------------------+-------------------------+
isdecimal()只判断数字, isdigit()判断数字和特殊的数字(如2),isnumeric()判断数字和不同语言的字符。直觉上来讲,执行效率应该是isdecimal()最快,isdigit()其次,isnumeric()最慢,但结果恰恰相反
请问有人能解释一下么 应该是因为,我说是应该,是我认为:
因为 isdecimal 是最严的,所以要排除的选项更多,
而 另外两个因为一个比一个宽松,所以要去排除的条件也就少。
虽然不知道对不对,但我知道,这与我们编程没有什么关系,没必要去这么刨根问底。
懂了吗?懂了就给个好评呗!!!
{:10_257:}{:10_297:}{:10_281:}{:10_298:}
打字不易!请给个好评!!!
兄弟!给个好评!求求了!!!
{:10_254:}{:10_254:}{:10_254:}{:10_254:} python爱好者. 发表于 2022-1-25 16:34
应该是因为,我说是应该,是我认为:
因为 isdecimal 是最严的,所以要排除的选项更多,
而 另外两个因为 ...
所以要排除的选项更多
这些函数的运行思路肯定不是一个个去排除啊....... 所以我也觉得怪{:10_277:} 我知道您的错误原因了:
您在测试时用的应该是 timeii.timeit(),
而不是 timeit.repait(),
所以真正的结果应该是如此:
x = timeit.timeit("'123'.isdecimal()",number = 100)
x
6.199999916134402e-06
x = timeit.timeit("'123'.isdigit()",number = 100)
x
6.8999997893115506e-06
x = timeit.timeit("'123'.isnumeric()",number = 100)
x
9.499999578110874e-06
所以真实结果与您得出的恰恰相反!
懂了吗?懂了就给个好评呗!!!
{:10_257:}{:10_297:}{:10_281:}{:10_298:}’
打字不易!请给个好评!!!
兄弟!给个好评!求求了!!!
{:10_254:}{:10_254:}{:10_254:}{:10_254:}
感谢兄弟好评!!! python爱好者. 发表于 2022-1-25 17:11
我知道您的错误原因了:
您在测试时用的应该是 timeii.timeit(),
而不是 timeit.repait(),
你这中看不中用啊{:10_262:} python爱好者. 发表于 2022-1-25 17:11
我知道您的错误原因了:
您在测试时用的应该是 timeii.timeit(),
而不是 timeit.repait(),
. 鹅鹅鹅
页:
[1]