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

有什么理由不使用'+'连接两个字符串吗?

司空学智
2023-03-14
问题内容

Python中常见的反模式是+在循环中使用串联字符串序列。这很不好,因为Python解释器必须为每次迭代创建一个新的字符串对象,并且最终要花费二次时间。(在某些情况下,最新版本的CPython显然可以优化此功能,而其他实现则不能,因此建议程序员不要依赖此功能。)''.join是执行此操作的正确方法。

但是,我听说它说过),您 _永远都不_要将它+用于字符串连接,而应该始终使用''.join格式字符串。我不明白为什么只连接两个字符串会出现这种情况。如果我的理解是正确的,则不应该花费二次时间,而且我认为a + b''.join((a, b))或更加简洁易读'%s%s' % (a, b)

+串联两个字符串是否是一种好习惯?还是有我不知道的问题?


问题答案:

两个 字符串用串联是没有错的+。确实,它比容易阅读''.join([a, b])

您是对的,尽管用+O(n ^ 2)操作连接两个以上的字符串(与相比,使用O(n)进行操作join)因此效率低下。但是,这与使用循环无关。偶数a + b + c + ...为O(n ^ 2),原因是每个串联产生一个新的字符串。

CPython2.4及更高版本试图缓解这种情况,但是join在连接两个以上的字符串时仍然建议使用。



 类似资料:
  • 问题内容: 我指的是模块中的OrderedDict,这是一个有序的字典。 如果它具有可订购的附加功能,我意识到这通常不是必需的,但是即使如此,是否还有缺点?慢一点吗?是否缺少任何功能?我没有看到任何丢失的方法。 简而言之,为什么我 不 总是使用它而不是普通的词典? 问题答案: 是的子类,并且需要更多内存来跟踪键的添加顺序。这不是小事。该实现在幕后增加了第二个,所有键的双向链接列表(这是记住顺序的部

  • 我试图连接两个字符串,一个字符串有一些值,另一个字符串有空。 示例: 并用concat函数和运算符连接这两个字符串 示例: 根据我的理解,当在concat函数中使用空字符串时,因为string2是空的,所以不会创建新的引用。但在使用运算符时,将在字符串池常量中创建一个新引用。但在下面的代码中,当使用运算符时,不会创建新的引用。 输出: 字符串1:69066349 类别:69066349 相同的 第

  • 问题内容: 我可以猜测浏览器已针对最新版本进行了优化,但是如何做到这一点呢?我们可以说串联字符串时最好使用吗? 更新资料 因此,在现代浏览器中,对字符串串联进行了优化,因此使用符号比要 串联 字符串时使用符号要快。 但是@Arthur指出,如果您实际上想使用分隔符连接字符串,则速度会更快。 问题答案: 浏览器字符串优化已更改了字符串串联图片。 Firefox是第一个优化字符串连接的浏览器。从1.0

  • 为什么下面的和对象不同,当尝试在字符串池中创建时,它检查内容已经有相同的内容,所以引用字符串池中的对象。但我的假设是错误的,那么任何人都会纠正我。

  • 问题内容: 我正在尝试连接Java中的字符串。为什么这不起作用? 问题答案: 你可以使用运算符来连接字符串: 被隐式转换为。