将两个字符串的字符一起添加

时间:2017-10-16 14:22:24

标签: python python-3.x

def merge(string1, string2):        
    print( "".join(i for j in zip(string1, string2) for i in j))

当我运行merge("big","small")输出为bsimga时,我希望代码输出bsimgall

即使字符串的长度不同,如何以交替方式添加两个字符串中的字符?

1 个答案:

答案 0 :(得分:2)

zip()只会在最短 iterable耗尽之前生成对。使用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='')