如何在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]