列表切片python

2024-04-26 12:02:28 发布

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

我有一份清单

myl = ['A','B','C','D','E','F'] #length always even

现在我想要的输出是'AB','CD','EF'

我试过了

^{pr2}$

我不喜欢这样,因为我觉得这太过分了。在

那么,有没有更好的方法来实现我的输出呢。在


Tags: 方法abcdalwayslengthevenefpr2
3条回答

这个怎么样?在

>>> ["%s%s" % (myl[c], myl[c+1]) for c in range(0, 6, 2)]
['AB', 'CD', 'EF']

为什么你的方法这么复杂?基本上你可以做你所做的,但是只有一句话,像这样:

[ "".join(t) for t in zip(myl[::2], myl[1::2]) ]

不过,F.J的回答更有效。在

可以使用列表理解或生成器表达式简洁地执行此操作:

>>> 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()方法更容易实现三人或更多人的分组。在

或者来自^{}文档的替代方案:

^{pr2}$

相关问题 更多 >