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


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

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

最佳答案

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='')

关于python - 将两个字符串的字符加在一起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46772609/

10-10 23:35
查看更多