为了账号安全,请及时绑定邮箱和手机立即绑定

在python中,整数比字符串更慢吗?

在python中,整数比字符串更慢吗?

四季花海 2021-12-09 18:18:27
我在寻找测量函数速度的方法时遇到了这段代码。def test():    """Stupid test function"""    L = []    for i in range(100):        L.append(i)if __name__ == '__main__':     import timeit     print(timeit.timeit("test()", setup="from __main__ import test"))当我运行它时,大约需要10秒,这对我来说很奇怪。我记得当我将 100.000 个字符串附加到一个字符串中时,它只需要 0.06 秒。为什么将 100 个整数附加到列表中需要 10 秒?这是我用来将字符串附加到列表的代码。def wordlist1():    fin = open("words.txt")    word_list = []    for line in fin:        word = line.strip()        word_list.append(word)    return word_list
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

我认为您的问题是 timeit 模块的使用。未指定时,参数number默认为 1e6。因此,您要有效测量的是将一百个数字附加到数组 1e6 次需要多长时间。


为了验证这一点,我使用了以下代码片段:


import timeit


alist = list(range(100))


L = []


def test():

    for i in alist:

        L.append(i)


elapsed = timeit.timeit("test()", setup="from __main__ import test, alist, L", number=1000000)


print('average time elapsed', elapsed/1000000)

在我的机器上,我得到了以下结果:


7.74517...e-06

我不知道您是如何测量 txt 文件的 append 函数的,但您可以尝试以相同的方式对其进行测试。


查看完整回答
反对 回复 2021-12-09
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

如果你使用 iPython,你可以使用它的%timeit魔法命令看到更清晰的结果解释。


In [1]: def test():

   ...:     """Stupid test function"""

   ...:     L = []

   ...:     for i in range(100):

   ...:         L.append(i)

   ...:


In [2]: %timeit test()

7.12 µs ± 22.9 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

这里的结果是每次调用 的平均时间为 7.12 微秒test,平均值计算了 7 组 100,000 次调用test。这与 DocDriven 在他的回答中报告的 7.75 微秒一致。


查看完整回答
反对 回复 2021-12-09
?
大话西游666

TA贡献1817条经验 获得超14个赞

试试这个


定义测试():


L = []


对于我在范围内(100)


    count + = i


    L.append(count )


    return count 


查看完整回答
反对 回复 2021-12-09
  • 3 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信