1

可能重复:
一次遍历两个字符串python

在这里,我有一个问题,即如何连接两个字符串,因为它们的单词一个接一个出现。我的意思是,如果第一个字符串是“abc”,第二个是“defgh”,那么最终答案应该是“adbecfgh”。 ..

这是我的代码,但它出现在同一行

x = raw_input ('Enter 1st String: ')
y = raw_input ('Enter 2st String: ')
z = [x, y]
a = ''.join(z)
print (a)

任何人都可以知道错误吗?

4

3 回答 3

6

你需要itertools.izip_longest()在这里或者itertools.zip_longest()如果你在 python 3.x 上:

In [1]: from itertools import izip_longest

In [2]: strs1="abc"

In [3]: strs2="defgh"

In [4]: "".join("".join(x) for x in izip_longest(strs1,strs2,fillvalue=""))
Out[4]: 'adbecfgh'
于 2012-11-03T12:03:52.453 回答
3

您想要的是文档roundrobin()的食谱:itertools

from itertools import cycle, islice

def roundrobin(*iterables):
    "roundrobin('ABC', 'D', 'EF') --> A D E B F C"
    # Recipe credited to George Sakkis
    pending = len(iterables)
    nexts = cycle(iter(it).__next__ for it in iterables)
    while pending:
        try:
            for next in nexts:
                yield next()
        except StopIteration:
            pending -= 1
            nexts = cycle(islice(nexts, pending))

请注意2.x 用户的细微差别

例如:

>>> "".join(roundrobin("abc", "defgh"))
adbecfgh
于 2012-11-03T12:00:34.983 回答
0
x = 'abc'
y = 'defgh'
z = [x, y]

from itertools import izip_longest
print ''.join(''.join(i) for i in izip_longest(*z, fillvalue=''))
于 2012-11-03T12:06:42.950 回答