2017-10-16 68 views
1
def merge(string1, string2):   
    print("".join(i for j in zip(string1, string2) for i in j)) 

当我运行merge("big","small")输出bsimga,我想要的代码输出bsimgall添加两个字符串中的字符一起

即使字符串长度不一样,我怎样才能以交替方式添加来自两个字符串的字符?

回答

2

zip()只会生成配对,直到最短迭代完毕。使用itertool.zip_longest()向前迭代并使用填充值填充较短的字符串。使用空字符串来垫:

from itertools import zip_longest 

def merge(string1, string2):   
    print("".join(i for j in zip_longest(string1, string2, fillvalue='') for i in j)) 

您可以将加入到print()

def merge(string1, string2):   
    print(*(i for j in zip_longest(string1, string2, fillvalue='') for i in j), sep='') 

,您可以使用itertools.chain.from_iterable()扁平化的结果:

from itertools import chain, zip_longest 

def merge(string1, string2):   
    print(*chain.from_iterable(zip_longest(string1, string2, fillvalue='')), sep='') 
+0

感谢您的帮助。 – brad

+0

很高兴能有帮助!如果您觉得它对您有用,请随时[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 :-) –