Python将文本附加到同一字符串的方法

Python将文本附加到同一字符串的方法,python,Python,我有一个简短的方法可以帮助我在Python中构建一些url字符串,但我想学习Python的方法。以下是我所拥有的: for url in some_list: url = constant_prefix + url 我看到了可以在Python中使用+=的地方,但我想一定有更好的方法。我只希望能够附加到某个字符串,并将结果存储回同一个变量。我问过自己同样的问题,我发现最好的选择是使用: 如果希望修改列表中的URL,请使用下面的循环: for index, url in enumerate

我有一个简短的方法可以帮助我在Python中构建一些url字符串,但我想学习Python的方法。以下是我所拥有的:

for url in some_list:
    url = constant_prefix + url

我看到了可以在Python中使用+=的地方,但我想一定有更好的方法。我只希望能够附加到某个字符串,并将结果存储回同一个变量。

我问过自己同样的问题,我发现最好的选择是使用:

如果希望修改列表中的URL,请使用下面的循环:

for index, url in enumerate(some_list):
    some_list[index] = "{}{}".format(constant_prefix, url)
请参阅问题中有关字符串格式的详细信息


祝你好运

唯一的方法是重新分配列表中的每个元素。下面是您的示例的最简单方法:

some_list = [constant_prefix + url for url in some_list]

在Python中,字符串是不可变的,因此无法就地更新字符串,必须用另一个字符串替换它。

字符串是不可变的。您可以更改引用字符串的变量,使其引用新字符串,但不能实际修改
str
对象

x = "Hello"       # x references the "Hello" string
x = x + " World!" # x references a NEW "Hello World!" string
持有“Hello”的实际字符串对象从未更改。它只会被另一个字符串对象交换

因此,您需要更改列表中的项目以获得新字符串,而不是修改列表中的字符串(不可能)

for index, url in enumerate(some_list):
    some_list[index] = constant_prefix + url
不再使用的旧字符串对象将被丢弃,并在列表中替换为新字符串

for index, url in enumerate(some_list):
    some_list[index] = constant_prefix + url
您以前的版本只修改了
url
变量,在迭代循环之外没有任何影响

马克·兰森在他的回答中提出了一种更具Python风格的方式:使用理解力创建一个新的列表:


给他一票()

谢谢你的详细回答!实际上,对于这些简单的情况,CPython确实会对字符串进行变异。CPython的可能副本会对字符串@Chris_Rands进行变异,这是Python本身在后台应用的优化。只有当没有其他未完成的字符串引用时,才会发生此优化。从概念的角度来看,它与创建新字符串是相同的。
new_urls = [constant_prefix + url for url in original_urls]