本文介绍了如何在列表中连接成对的字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个类似
myl = ['A','B','C','D','E','F'] #length always even
现在我想要的输出是'AB','CD','EF'
我尝试过
>>> myl = ['A','B','C','D','E','F']
>>> even_pos = myl[::2]
>>> odd_pos = myl[::-2]
>>> odd_pos.reverse()
>>> newlist = zip(even_pos,odd_pos)
>>> for x in newlist:
... print "".join(list(x))
...
...
AB
CD
EF
>>>
我不喜欢这种方式,因为我认为这太多了.
I don't like this way because I think this is too much.
因此,有没有更好的方法来实现我的输出.
So, is there any better way to achieve my output.
推荐答案
您可以使用列表推导或生成器表达式来简洁地做到这一点:
You can do this concisely using a list comprehension or generator expression:
>>> myl = ['A','B','C','D','E','F']
>>> [''.join(myl[i:i+2]) for i in range(0, len(myl), 2)]
['AB', 'CD', 'EF']
>>> print '\n'.join(''.join(myl[i:i+2]) for i in range(0, len(myl), 2))
AB
CD
EF
对于这种特殊情况,您可以将''.join(myl [i:i + 2])
替换为 myl [i] + myl [i + 1]
,但是当您要进行三个或三个以上的分组时,使用''.join()
方法更容易.
You could replace ''.join(myl[i:i+2])
with myl[i] + myl[i+1]
for this particular case, but using the ''.join()
method is easier for when you want to do groups of three or more.
或者 zip()
:
>>> map(''.join, zip(*[iter(myl)]*2))
['AB', 'CD', 'EF']
这篇关于如何在列表中连接成对的字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!