【发布时间】:2017-01-11 17:35:13
【问题描述】:
我能够在网上找到大量信息(关于 StackOverflow 和其他),说明在 Python 中使用 + 或 += 进行连接是一种非常低效和糟糕的做法。
我似乎找不到为什么+= 效率如此低下。除了提到here“在某些情况下它已针对 20% 的改进进行了优化”(仍然不清楚这些情况是什么)之外,我找不到任何其他信息。
在技术层面上发生了什么使''.join() 优于其他 Python 连接方法?
【问题讨论】:
-
+=对于字符串、整数的行为不同。 Python 可能需要更多时间来确定+=对其进行操作的数据类型,即如果它们是整数则添加它,而如果它们是字符串则连接。在' '.join()操作中,它只需要字符串元素——这使得 Python 不必担心它处理的数据类型。 -
@cricket_007 链接到一个提供更多洞察力的好帖子。不过我已经接受了 mgilson 的回答。
-
@BryanOakley 检查源代码我什至没有想到。这是解决问题的另一个好方法。
-
您可能会发现Shlemiel the painter(最初告诉here)的故事有助于了解使用字符串进行大量
+=连接的潜在性能成本。+=在 Python 中可能是O(N)的确切原因与在 C 中strcat是O(N)的原因并不完全相同,但它是相似的。
标签: python optimization