给定字符串s1和s2,不一定长度相同,创建一个由s1和s2的交替字符组成的新字符串(即s1的第一个字符后跟s2的第一个字符,后跟第二个字符s1的字符,后跟s2的第二个字符,依此类推。一旦到达任一字符串的末尾,就不会添加其他字符。例如,如果s1包含" abc" s2包含&# 34; uvwxyz",那么新字符串应包含" aubvcw"。将新字符串分配给变量s3。
我试过这样但是它一直给我一个错误:
s3 = ""
for i in range(len(s1)):
s3 += s1[i] + s2[i]
join.min(s1,s2)
例如,s1是"abc"
,s2是"uvwxyz"
。
s3应该是"aubvcw"
。
答案 0 :(得分:1)
我提出两种解决方案。一个使用min()
函数,另一个不使用...
min()
In [26]: s3 = ''
计算每个字符串的长度,并使用min()
来捕获最短的字符串。
In [27]: short = min(len(s1), len(s2))
在short
函数中使用range()
,我们可以将迭代次数限制为最短字符串中的字符数...
In [28]: for i in range(short):
...: s3 += s1[i] + s2[i]
...:
In [29]: s3
Out[29]: 'aubvcw'
min()
不使用min()
的可能解决方案是利用zip()
函数和字符串方法join()
。
来自每个输入的zip
函数对元素,并且默认情况下,当它到达最短输入的末尾时停止创建对。)
In [18]: s1 = 'abc'
In [19]: s2 = 'uvwxyz'
在这种情况下,zip()
将产生一系列对,如下所示:
(' a',' u')
(' b',' v')
(' c',' w')
下面的内部''.join()
方法将每对中的每个元素与一个空字符串组合在一起。这将产生一系列有向图:'au'
,'bv'
,'cw'
。
外部''.join()
方法然后将每个有向图与空字符串组合在一起。
In [22]: ''.join(''.join(pair) for pair in zip(s1, s2))
Out[22]: 'aubvcw'