“+”连接字符串,就像在许多其他编程语言(例如Java)中一样,因为它直观且容易。但我很快意识到,成熟的开发人员似乎更喜欢使用.join()来连接字符串,而不是“+”。你现在一定和我刚知道这个的时候一样困惑。在这篇文章中,我将告诉您这两种方法的区别,以及为什么您不应该使用“+”。作为初学者,或者刚刚从另一种使用“+”连接字符串的编程语言切换过来的人,很容易编写如下代码:str1="Ilove"str2="Python"。print(str1+str2)但是时间久了,你可能会发现别人是这样写的:str1="Ilove"str2="Python."print(''.join([str1,str2]))老实说,当我第一次看到上面的方法时,我觉得它既不直观也不美观。连接多个字符串稍晚一点,当我需要连接列表中的多个字符串时出现了转折。strs=['Life','is','short','I','use','Python']最初,我是这样做的:strs=['Life','is','short,','I','use','Python']defjoin_strs(strs):result=''forsinsstrs:result+=''+sreturnresult[1:]join_strs(strs)我必须写一个for循环来一个一个地连接字符串。另外,我在开头添加的空格需要在结果字符串之前删除,因为所有字符串都需要以空格开头,而不仅仅是开头。也许你有一些其他的解决方案,比如将索引添加到for循环中,这样index=0处的字符串就不会被添加到这个空间中。无论如何,您仍然需要使用这个for循环并为空格做一些事情。在这一点上,我记得之前看到过.join()方法,我突然意识到也许这就是我需要使用它的目的!超级简单的解决方案!一行代码完成所有工作。由于.join()方法由将用于连接列表中每个字符串的字符串对象调用,因此您无需担心前导空格。但这并不是我们需要使用join()而不是"+"方法的唯一原因。join()方法背后的逻辑让我们比较这两种方法的性能,使用JupyterNotebook的魔术方法%timeit来评估它。上面显示的性能基于100k路径,结果非常合理和明显。使用join()方法可能比使用“+”连接列表中的字符串快4倍。为什么是这样?查看我绘制的这个概念图,以演示如何使用“+”连接字符串:使用“+”运算符和For循环连接字符串这显示了for循环和“+”运算符它的作用:对于每个循环,可以从链表中找到字符串对于每一次循环,执行者都需要申请两次内存地址,一次申请空格,另一次申请字符串。Python执行器解释表达式result+=''+s并为该空间请求一个内存地址。然后,执行器意识到这个空格需要和字符串拼接起来,所以会为字符串s申请一个内存地址,也就是第一个循环“life”。还有12个内存分配。那么,使用join()方法会发生什么?使用“join()”方法将字符串连接到一个列表中。执行程序将计算列表中有多少个字符串。这是其中的6个。这意味着用于连接列表的字符串需要重复6-1=5次。这里一共需要11个内存空间,所以所有这些空间都会立即申请并预先分配。然后在返回结果页面之前按顺序对字符串进行排序。显然,主要区别在于内存分配的数量,这是提高性能的主要原因。想象一下使用join()方法将6个字符串连接在一起,速度已经快了4倍。如果我们连接大量字符串怎么办?变化会更大!在Python中连接字符串时,由于其性能,显然首选join()方法。一般来说,学习一门编程语言需要很长时间。但是初学者上手Python的时间相对较短是它的优势之一。但我们不应该止步于此,满足于我们现在可以用Python做什么。毕竟,区分普通与非凡的可能是小细节。
