gpt4 book ai didi

python - 在 Python 中连接字符串的最有效方法

转载 作者:行者123 更新时间:2023-12-03 21:31:21 25 4
gpt4 key购买 nike

在问这个问题时,我正在使用 Python 3.8

当我说高效时,我只是指字符串连接的速度,或者用更专业的术语:我问的是时间复杂度,而不是空间复杂度。

鉴于以下情况,我目前能想到的唯一方法是以下 3 种:

a = 'start'
b = ' end'

方法一
result = a + b
方法二
result = ''.join((a, b))
方法三
result = '{0}{1}'.format(a, b)
我想知道这些方法中哪个更快,或者是否有其他方法更有效。此外,如果您知道这些方法中的任何一种在处理更多字符串或更长字符串时的表现是否不同,请在您的答案中包含该内容。

编辑

看了所有的评论和答案后,我学到了一些连接字符串的新方法,我还了解了 timeit 库。我将在下面报告我的个人发现:
>>> import timeit

>>> print(timeit.Timer('result = a + b', setup='a = "start"; b = " end"').timeit(number=10000))
0.0005306000000473432

>>> print(timeit.Timer('result = "".join((a, b))', setup='a = "start"; b = " end"').timeit(number=10000))
0.0011297000000354274

>>> print(timeit.Timer('result = "{0}{1}".format(a, b)', setup='a = "start"; b = " end"').timeit(number=10000))
0.002327799999989111

>>> print(timeit.Timer('result = f"{a}{b}"', setup='a = "start"; b = " end"').timeit(number=10000))
0.0005772000000092703

>>> print(timeit.Timer('result = "%s%s" % (a, b)', setup='a = "start"; b = " end"').timeit(number=10000))
0.0017815999999584164

看来对于这些小串,传统的 a + b方法是最快的字符串连接。感谢所有的答案!

最佳答案

对于正好两个字符串 ab ,只需使用 a + b .替代方案是加入 2 个以上的字符串,避免临时 str每次使用 + 创建的对象,以及由于在下一个结果中重复复制先前操作的内容而导致的二次行为。

(还有 f'{a}{b}' ,但它在语法上更重并且不比 a + b 快。)

关于python - 在 Python 中连接字符串的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61392258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com