如何在Python中交错字符串?

2024-04-23 20:12:41 发布

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

如何在Python中交错字符串?

给定

s1 = 'abc'
s2 = 'xyz'

如何获得axbycz


Tags: 字符串abcs2xyzs1axbycz
3条回答

(如果字符串长度相同)怎么样

s1='abc'
s2='xyz'
s3=''
for x in range(len(s1)):
   s3 += '%s%s'%(s1[x],s2[x])

我还想指出,本文现在是“python interleave strings”的Google搜索结果,鉴于上面的评论,我觉得很讽刺:-)

数学的,为了好玩

s1="abc"
s2="xyz"

lgth = len(s1)

ss = s1+s2

print ''.join(ss[i//2 + (i%2)*lgth] for i in xrange(2*lgth))

还有一个:

s1="abc"
s2="xyz"

lgth = len(s1)

tu = (s1,s2)

print ''.join(tu[i%2][i//2] for i in xrange(2*lgth))
# or
print ''.join((tu[0] if i%2==0 else tu[1])[i//2] for i in xrange(2*lgth))

这是一种方法

>>> s1 = "abc"
>>> s2 = "xyz"
>>> "".join(i for j in zip(s1, s2) for i in j)
'axbycz'

它也适用于2个以上的字符串

>>> s3 = "123"
>>> "".join(i for j in zip(s1, s2, s3) for i in j)
'ax1by2cz3'

这是另一条路

>>> "".join("".join(i) for i in zip(s1,s2,s3))
'ax1by2cz3'

还有一个

>>> from itertools import chain
>>> "".join(chain(*zip(s1, s2, s3)))
'ax1by2cz3'

一个没有zip

>>> b = bytearray(6)
>>> b[::2] = "abc"
>>> b[1::2] = "xyz"
>>> str(b)
'axbycz'

而且效率很低

>>> ((s1 + " " + s2) * len(s1))[::len(s1) + 1]
'axbycz'

相关问题 更多 >