python中的交错字符串

2024-10-06 07:38:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个测试题,我必须把两个字符串中的字母交织成一个,我用下面的代码来做:

“abcd”和“efghi”—>;“aebfcgdhi”

s1,s2='abcd' ,'efghi'
t=[a+b for a,b in zip(s1, s2) ]
ls1 = len(s1)
ls2 = len(s2)
if ls1 > ls2:
    t.extend(s1[ls2:])
elif ls1 < ls2:
    t.extend(s2[ls1:])
print ''.join(t)

我首先尝试使用下面的方法,似乎只有当字符串的长度相同或s2是较长的字符串时才有效。在

^{pr2}$

我的逻辑哪里出错了?在


Tags: 字符串代码gtlen字母abcds2extend
2条回答

要使代码正常工作,只需在max函数中使用key参数

print  ''.join([a+b for a,b in zip(s1, s2)]) + max(s1,s2, key=len)[min(len(s1),len(s2)):]

或者,可以使用itertools.izip_longest进行迭代,直到两个iterable中最大的一个用完为止。所以,这个解决方案不考虑字符串的长度。在

^{pr2}$

输出

aebfcgdhi

编辑:

不使用itertools

s1,s2='abcd' ,'efghi'
minLen = min(len(s1), len(s2))
print "".join(y for x in zip(s1, s2) for y in x) + s1[minLen:] + s2[minLen:]

不使用itertools.izip_longest

>>> s1, s2 = 'abcd', 'efghi'
>>> l = min(len(s1), len(s2))
>>> ''.join(a+b for a, b in zip(s1, s2)) + s1[l:] + s2[l:]
'aebfcgdhi'

相关问题 更多 >