如何在python中切片元组列表?

And*_*reL 7 python list-comprehension list slice python-2.7

假设:

L = [(0,'a'), (1,'b'), (2,'c')]
Run Code Online (Sandbox Code Playgroud)

如何获取0每个索引tuple作为假装结果:

[0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

为了得到我使用python list comprehension并解决了问题:

[num[0] for num in L]
Run Code Online (Sandbox Code Playgroud)

尽管如此,它必须是一种切割它的 L[:1] pythonic 方式,但当然这种滑动不起作用.

有更好的解决方案吗?

Tig*_*kT3 8

您可以使用*拆包zip().

>>> l = [(0,'a'), (1,'b'), (2,'c')]
>>> for item in zip(*l)[0]:
...     print item,
...
0 1 2
Run Code Online (Sandbox Code Playgroud)

对于Python 3,zip()不会list自动生成,因此您必须将zip对象发送到list()或使用next(iter())或者其他内容:

>>> l = [(0,'a'), (1,'b'), (2,'c')]
>>> print(*next(iter(zip(*l))))
0 1 2
Run Code Online (Sandbox Code Playgroud)

但你的已经很好了.

  • 请注意,OP用2.7标记了问题,因此他们只需要:`zip(*l)[0]`. (2认同)