如何在python中分割元组列表?

如何在python中分割元组列表?,python,list,python-2.7,list-comprehension,slice,Python,List,Python 2.7,List Comprehension,Slice,假设: L = [(0,'a'), (1,'b'), (2,'c')] 如何获取每个元组的索引0,作为假装的结果: [0, 1, 2] 为了实现这一点,我使用了python列表理解,并解决了这个问题: [num[0] for num in L] 尽管如此,它必须是一种类似于python的方式,可以像L[:1]那样对其进行切片,但是这种切片当然不起作用 有更好的解决方案吗?您可以使用*使用zip()解包 对于Python 3,zip()不会自动生成list,因此您必须将zip对象发送到lis

假设:

L = [(0,'a'), (1,'b'), (2,'c')]
如何获取每个
元组的索引
0
,作为假装的结果:

[0, 1, 2]
为了实现这一点,我使用了
python列表理解
,并解决了这个问题:

[num[0] for num in L]
尽管如此,它必须是一种类似于python的方式,可以像
L[:1]
那样对其进行切片,但是这种切片当然不起作用


有更好的解决方案吗?

您可以使用
*
使用
zip()解包

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

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

但是你的解决方案已经很好了。

你的解决方案在我看来是最有吸引力的;你也可以这样做

tuples = [(0,'a'), (1,'b'), (2,'c')]
print zip(*tuples)[0]

。。。但对我来说,这太“聪明”了,列表理解版更清晰。

关于
map

>>> list = [(0,'a'), (1,'b'), (2,'c')]
>>> l = []
>>> for t in list:
        l.append(t[0])
map(lambda (number, letter): number, L)
在python 2中对其进行切片

map(lambda (number, letter): number, L)[x:y]
在python 3中,必须首先将其转换为列表:

list(map(lambda (number, letter): number, L))[x:y]

您可以将其转换为numpy数组

import numpy as np
L = [(0,'a'), (1,'b'), (2,'c')]
a = np.array(L)
a[:,0]

列表理解解决方案怎么了?我想说你的列表理解解决方案是最好的方法。列表理解对我来说似乎很好。这里有一个更糟糕的选择:
来自操作符import itemgetter;map(itemgetter(0),lst)
@Nhor,
LC
work,
[0,1,2]
是它的输出,不要调用你的列表
list
list
是类型的名称。请注意,OP用2.7标记了问题,因此他们只需要:
zip(*l)[0]
。命名变量
list
会给内置的
list
添加阴影,但OP是先做的!疯狂地编辑我不知道你在说什么,善良的先生。
import numpy as np
L = [(0,'a'), (1,'b'), (2,'c')]
a = np.array(L)
a[:,0]