Как чередовать строки в Python?Как чередовать строки в Python?
Учитывая
s1 = 'abc'
s2 = 'xyz'
Как получить axbycz
?
Как чередовать строки в Python?Как чередовать строки в Python?
Учитывая
s1 = 'abc'
s2 = 'xyz'
Как получить axbycz
?
Вот один из способов сделать это
>>> 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] для [a, b] в zip (s1, s2)], [])) ''. Приобретено. – eyquem
Я выбрал бы «" .join ("". Join (i) для i в zip (s1, s2, s3)), так как это, пожалуй, самый простой способ проанализировать мои глазные яблоки. – lysdexia
Что о (если строки имеют одинаковую длину):
s1='abc'
s2='xyz'
s3=''
for x in range(len(s1)):
s3 += '%s%s'%(s1[x],s2[x])
Я хотел бы также обратите внимание, что эта статья теперь является результатом поиска # 1 Google для «строк чередования python», которые, учитывая приведенные выше комментарии, я нахожу ироничными :-)
Математическая один, для удовольствия
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))
Никто не собирается, чтобы помочь вам, если вы не показать некоторые ** ** усилия. Кроме того, ** этот вопрос можно решить с помощью Google **. Я не люблю это говорить, но в этом случае это правда: ** Google - ваш друг! ** –
Это не конкатенация. – badp
Не уверен, как это назвать - я пошел с чередованием. –