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)。 :-) –