我正在尝试使用for循环编写一个新字符串,但每次循环经过迭代时,字符串都会被新迭代重写。有什么方法可以阻止这种情况吗?
for i in range(0,len(string1)):
newString = string1[i] + string2[i]
return newString
newString仅作为最后一次迭代出现,当我需要newString成为最后一次迭代时。
答案 0 :(得分:3)
如果要累积所有每次迭代值,请尝试使用聚合赋值运算符+=
。以下代码将返回一个非常长的字符串,它是所有中间字符串的串联。
newString = ''
for i in range(0,len(string1)):
newString += string1[i] + string2[i]
return newString
或者,您可能希望返回中间值列表,如下所示:
newList = []
for i in range(0,len(string1)):
newList += [string1[i] + string2[i]]
return newList
但请注意,在循环中追加字符串通常是个坏主意。它会导致大量内存重新分配。典型的Pythonic形式是将中间值收集到一个列表中并将它们''.join()
放在一起,如下所示:
newList = []
for i in range(0,len(string1)):
newList += [string1[i] + string2[i]]
newString = ''.join(newList)
return newString
等效,更紧凑,
return ''.join(''.join(chars) for chars in zip(string1, string2))