当前位置: 首页 > 面试题库 >

在Python中连接字符串的首选方法是什么?

沈思博
2023-03-14
问题内容

由于string无法更改Python,因此我想知道如何更有效地连接字符串?

我可以这样写:

s += stringfromelsewhere

或像这样:

s = []
s.append(somestring)

later

s = ''.join(s)

问题答案:

将字符串附加到字符串变量的最佳方法是使用+或+=。这是因为它可读且快速。它们的速度也一样快,你选择的是一个品味问题,后者是最常见的。以下是该timeit模块的计时:

a = a + b:
0.11338996887207031
a += b:
0.11040496826171875

但是,那些建议拥有列表并附加到列表然后再连接这些列表的人之所以这样做,是因为与扩展字符串相比,将字符串附加到列表可能非常快。在某些情况下,这可能是正确的。例如,这里是一字符字符串的一百万个追加,首先是字符串,然后是列表:

a += b:
0.10780501365661621
a.append(b):
0.1123361587524414

好的,事实证明,即使结果字符串的长度为一百万个字符,追加操作仍然更快。

现在让我们尝试将十千个字符长的字符串追加十万次:

a += b:
0.41823482513427734
a.append(b):
0.010656118392944336

因此,最终字符串的长度约为100MB。那是很慢的,将其追加到列表中要快得多。那个时机不包括决赛a.join()。那要花多长时间?

a.join(a):
0.43739795684814453

哎呀 即使在这种情况下,append / join也较慢。

那么,该建议来自何处?Python 2?

a += b:
0.165287017822
a.append(b):
0.0132720470428
a.join(a):
0.114929914474

好吧,如果你使用非常长的字符串(通常不是,那么内存中有100MB的字符串),append / join 那里的速度会稍微快一些。

但是真正的关键是Python 2.3。我什至不告诉你时间安排,因为它是如此之慢以至于还没有完成。这些测试突然需要几分钟。除了append / join之外,它与以后的Python一样快。

对。在石器时代,字符串连接在Python中非常缓慢。但是在2.4上已经不存在了(或者至少是Python 2.4.7),因此在2008年Python 2.3停止更新时,使用append / join的建议已过时,你应该停止使用它。:-)

(更新:当我更仔细地进行测试时发现+,+=在Python 2.3上使用和在两个字符串上也更快,建议使用时''.join()一定会产生误解)

但是,这是CPython。其他实现可能还有其他问题。这是过早优化是万恶之源的又一个原因。除非你先进行测量,否则不要使用被认为“更快”的技术。

因此,进行字符串连接的“最佳”版本是使用+或+ =。如果事实证明这对你来说很慢,那是不太可能的,那么请执行其他操作。

那么,为什么在我的代码中使用大量的添加/联接呢?因为有时候它实际上更清晰。尤其是当你应将其串联在一起时,应以空格或逗号或换行符分隔。



 类似资料:
  • 因为Python的不能更改,我想知道如何更有效地连接字符串? 我可以这样写: 或者像这样: 在写这个问题的时候,我发现了一篇谈论这个话题的好文章。 http://www.skymind.com/~ocrow/python_string/ 但是它是在Python2.x中,所以问题是Python3中是否做了一些更改?

  • 我们有一个用空格分隔的数字或单词的长字符串。我们需要获取它们的流。首选方法是什么? 我知道两个选择: 数组(str.split(“”).stream(); 新扫描仪(str)。代币() 两者都返回字符串流。哪个选项更好? 还有其他方法吗?

  • 问题内容: 我想使用php / pdo制作一个后端应用程序。我发现了很多不同的方法来进行PDO连接字符串。我想知道,使用pdo做连接字符串的最佳方法是什么。这是做连接字符串的最佳方法还是我应该使用其他一些代码。欢迎任何建议或调整! 这是我目前所拥有的: 问题答案: 这个问题并不像看起来那么容易。我写了一个规范的示例, 如何使用PDO连接到MySQL 。 因此,让我们看一下可以改进的地方: 可以将c

  • 本文向大家介绍python字符串连接方法分析,包括了python字符串连接方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了python字符串连接方法。分享给大家供大家参考,具体如下: python字符串连接有几种方法,把大家可能用到的列出来,第一个方法效率是最低的,另外给大家介绍后面的 2种效率高的方法,希望对大家有帮助。 先介绍下效率比较低的,有些新手朋友就会犯这个错误: 说下为

  • 我有一些字符串要连接,结果字符串会很长。我还有一些要连接的变量。 如何组合字符串和变量,使结果成为多行字符串? 以下代码抛出错误。 这个我也试过 请建议一种方法。

  • 问题内容: 给出以下无害的小清单: 我的目标是使用以下方法之一以Python方式串联小恶魔: A. plain ol’string函数来完成工作,简短,没有导入 B.lambda,lambda,lambda C.全球化(什么都不做,什么都导入) 请提出其他蟒蛇般的方法来完成这项宏大的任务。 请对解决方案进行排名(python级别),并对解决方案进行评分,并给出简洁的解释。 在这种情况下,最Pyth