我有以下功能:
def f(s1,s2):
s=''
for i in range(min(len(s1),len(s2))):
s = s1[i] + s2[i]
if len(s1) < len(s2): return s + s2[len(s1):]
else: return s + s1[len(s2):]
print(f('1234','abc'))
这个函数应该将两个字符串打印在一起作为1a2b3c4,但是当我运行它时我只得到后半部分3c4。关于为什么会发生这种情况的任何想法?谢谢!
答案 0 :(得分:4)
因为你正在艰难地做这件事。
s = ''.join((x + y) for (x, y) in zip(s1, s2))
答案 1 :(得分:1)
你的意思是s +=
循环中的for
,对吗?
答案 2 :(得分:1)
看起来你正在重新分配变量's'而你应该连接。
替换: s = s1 [i] + s2 [i]
使用: s = s + s1 [i] + s2 [i]