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

我在寻找测量函数速度的方法时遇到了这段代码。


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


四季花海
浏览 160回答 3
3回答

慕虎7371278

我认为您的问题是 timeit 模块的使用。未指定时,参数number默认为 1e6。因此,您要有效测量的是将一百个数字附加到数组 1e6 次需要多长时间。为了验证这一点,我使用了以下代码片段:import timeitalist = 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 函数的,但您可以尝试以相同的方式对其进行测试。

梦里花落0921

如果你使用 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 微秒一致。

大话西游666

试试这个定义测试():L = []对于我在范围内(100)    count + = i    L.append(count )    return count 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python