2020年10月24日 / 38次阅读 / Last Modified 2020年10月24日
字符串
要看使用场景,如果只是少量的几个字符串拼接,用+更快,也更有可读性。大量字符串拼接,用str.join更快。
$ python3 -m timeit -p '"123"+"456"'
50000000 loops, best of 5: 5.96 nsec per loop
$ python3 -m timeit -p '"".join(("123","456"))'
5000000 loops, best of 5: 69.2 nsec per loop
只有两个字符串拼接的时候,join函数慢10倍以上!
我理解+是一个操作,而join是个函数调用,有一些其它的overhead。
>>> import timeit
>>> a = ['123' for i in range(int(1e6))]
>>> len(a)
1000000
>>>
>>> def test1():
... for it in a:
... it + '456'
...
>>> def test2():
... for it in a:
... ''.join((it,'456'))
...
>>> timeit.timeit(test1, number=100)
4.779130356851965
>>> timeit.timeit(test2, number=100)
9.719397358829156
这也是个join函数更慢的case,因为不断地在调用join函数。
下面是调用jion快的情况:
>>> len(a)
1000000
>>>
>>> def test3():
... b = ''
... for it in a:
... b += it
... return b
...
>>> def test4():
... return ''.join(a)
...
>>> timeit.timeit(test3, number=100)
5.043632473098114
>>> timeit.timeit(test4, number=100)
0.5507863389793783
test4这个函数实现了test3相同的功能,不过test4只调用了一次jion函数,一次调用把100万个字符串拼接在一起,而不是拼接100万次,因此效率就提高了。
-- EOF --
本文链接:https://www.pynote.net/archives/2641
前一篇:python如何直接跳出多重循环?
后一篇:SQLite的特有功能
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记