1
def merge(string1, string2):
print("".join(i for j in zip(string1, string2) for i in j))
当我运行merge("big","small")
输出bsimga
,我想要的代码输出bsimgall
。添加两个字符串中的字符一起
即使字符串长度不一样,我怎样才能以交替方式添加来自两个字符串的字符?
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='')
感谢您的帮助。 – brad
很高兴能有帮助!如果您觉得它对您有用,请随时[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 :-) –