我有两个字符串,(string1和string2).
如果它们的长度相等,则该函数应返回一个字符串,该字符串由两个字符串中的每一个字符串交替形成.
如果它们的长度不相等,则函数通过重复最后一个字符来扩展较短的字符串,直到它们具有相同的长度,然后交替显示两个字符串的字符.
例如,
extendedString("abc", "def") => "adbecf"
extendedString("ab", "defg") => "adbebfbg"
Run Code Online (Sandbox Code Playgroud)
如果字符串的长度相同,我已经写了它返回的部分,但我不知道如何重复最后一个字符.
def extendedString(string1, string2):
x = string1
y = string2
z = ""
if len(x) == len(y):
return "".join(i for j in zip(string1,string2) for i in j)
Run Code Online (Sandbox Code Playgroud)
Dek*_*kel 11
您可以使用itertools中的zip_longest
函数.
像zip一样工作,但是你可以填充空白(默认填充是None,但你可以改变它:
import itertools
def extendedString(string1,string2):
filler = string2[-1] if len(string1)>len(string2) else string1[-1]
return "".join(i for j in itertools.zip_longest(string1, string2, fillvalue=filler) for i in j)
Run Code Online (Sandbox Code Playgroud)
添加填充物作为最短字符串的最后一个字符(如果需要)
In [50]: extendedString("abc","def")
Out[50]: 'adbecf'
In [51]: extendedString("ab","defg")
Out[51]: 'adbebfbg'
Run Code Online (Sandbox Code Playgroud)
如果你使用python2函数是itertools.izip_longest
一个只有一行的解决方案,不要求itertools
:
def extendedString(a,b):
return ''.join(x+y for x,y in zip(*(s+s[-1]*(max(len(a),len(b))-len(s)) for s in (a,b))))
Run Code Online (Sandbox Code Playgroud)
输出:
$ extendedString('abc','1234')
'a1b2c3c4'
$ extendedString('abc','12')
'a1b2c2'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2283 次 |
最近记录: |