【问题标题】:How do I interleave strings in Python? [closed]如何在 Python 中交错字符串? [关闭]
【发布时间】:2011-03-06 06:12:16
【问题描述】:

如何在 Python 中交错字符串?

给定

s1 = 'abc'
s2 = 'xyz'

我如何获得axbycz

【问题讨论】:

  • 如果你不表现出一些努力,没有人会帮助你。除此之外,这个问题可以用谷歌解决。我不想这么说,但在这种情况下确实如此:Google 是你的朋友!
  • 不知道该怎么称呼这个 - 我已经使用“交错”了。
  • 我想我会称之为zip -ping ;)

标签: python


【解决方案1】:

这是一种方法

>>> 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'

【讨论】:

  • 选择什么?哪一种是“最好只有一种明显的方法”?
  • @gnibbler 这个呢? :) print ''.join(sum([ [a,b] for [a,b] in zip(s1,s2)],[])) 。虽然赞成。
  • 我会选择 "".join("".join(i) for i in zip(s1,s2,s3)) 因为它可能是最容易用我的眼球解析的。
  • @eyquem, sum(...,[]) 具有二次性能(因为它每次添加元素时都会创建一个新列表)
  • @gnibbler 在文档中:"sum(iterable[, start]) 从左到右对 start 和 iterable 的项目求和并返回总数。" 它没有'不是说每次添加项目后都会创建一个新对象,而不是就地添加。但你一定是对的,因为如果我这样做:li=[]print id(li)tot = sum([ [a,b] for [a,b] in zip(s1,s2)],li)print id(tot),我得到 1871811218748560
【解决方案2】:

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

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

我还想指出,这篇文章现在是“python 交错字符串”的 Google 搜索结果第一名,鉴于上述 cmets,我觉得这很讽刺 :-)

【讨论】:

  • 这样的事情总是发生在 SO ;)
  • 它仍然是python interleave strings 的#1 google 搜索结果
【解决方案3】:

数学题,好玩

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))

【讨论】:

    猜你喜欢
    • 2014-07-10
    • 2019-05-27
    • 2023-03-03
    • 2013-11-25
    • 2021-09-30
    • 2023-02-23
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    相关资源
    最近更新 更多