明智地连接两个字符串元素
Concatenate two strings elements wise
我遇到了一个问题,我必须明智地连接两个字符串元素
例如:
str1 = "ABCD"
str2 = "EFGH"
output = "AEBFCGDH"
这段代码是我写的
op = ''
op = op.join([i + j for i, j in zip(str1, str2)])
print(op)
它起作用了,但我想知道两个字符串的长度是否不同
例如:
str1 = "ABC"
str2 = "DEFGH"
output = "ADBECFGH"
or
str1 = "ABCDG"
str2 = "DEF"
output = "ADBECFDG"
我该如何为此编码?
简单的解决方案:
str1 = "ABCDG"
str2 = "DEF"
suffix_start = min(len(str1), len(str2))
suffix = str1[suffix_start:]+str2[suffix_start:]
output = ''.join([i + j for i, j in zip(str1, str2)]) + suffix
print(output) # ADBECFDG
您可以使用较短的字符串,压缩至其长度,然后连接较长字符串的剩余部分。
例如:
str1 = 'ABC'
str2 = 'DEFGH'
op = ''
if len(str1)>len(str2):
op = op.join([i + j for i, j in zip(str1, str2)])+str1[len(str2):]
else:
op = op.join([i + j for i, j in zip(str1, str2)]) + str2[len(str1):]
print(op) # output: ADBECFGH
zip() 只压缩到两个可迭代对象中较短的一个。
参见:https://docs.python.org/3.3/library/functions.html#zip
只需将 zip()
切换为 zip_longest()
:
from itertools import zip_longest
str1 = "ABCDG"
str2 = "DEF"
output = ''.join([i + j for i, j in zip_longest(str1, str2, fillvalue="")])
print(output) # ADBECFDG
我遇到了一个问题,我必须明智地连接两个字符串元素 例如:
str1 = "ABCD"
str2 = "EFGH"
output = "AEBFCGDH"
这段代码是我写的
op = ''
op = op.join([i + j for i, j in zip(str1, str2)])
print(op)
它起作用了,但我想知道两个字符串的长度是否不同 例如:
str1 = "ABC"
str2 = "DEFGH"
output = "ADBECFGH"
or
str1 = "ABCDG"
str2 = "DEF"
output = "ADBECFDG"
我该如何为此编码?
简单的解决方案:
str1 = "ABCDG"
str2 = "DEF"
suffix_start = min(len(str1), len(str2))
suffix = str1[suffix_start:]+str2[suffix_start:]
output = ''.join([i + j for i, j in zip(str1, str2)]) + suffix
print(output) # ADBECFDG
您可以使用较短的字符串,压缩至其长度,然后连接较长字符串的剩余部分。 例如:
str1 = 'ABC'
str2 = 'DEFGH'
op = ''
if len(str1)>len(str2):
op = op.join([i + j for i, j in zip(str1, str2)])+str1[len(str2):]
else:
op = op.join([i + j for i, j in zip(str1, str2)]) + str2[len(str1):]
print(op) # output: ADBECFGH
zip() 只压缩到两个可迭代对象中较短的一个。 参见:https://docs.python.org/3.3/library/functions.html#zip
只需将 zip()
切换为 zip_longest()
:
from itertools import zip_longest
str1 = "ABCDG"
str2 = "DEF"
output = ''.join([i + j for i, j in zip_longest(str1, str2, fillvalue="")])
print(output) # ADBECFDG