假设
L = [(0,'a'), (1,'b'), (2,'c')]
如何获取索引 0
的每 tuple
作为假装的结果。
[0, 1, 2]
为了得到这个结果,我用了 python list comprehension
并解决了这个问题。
[num[0] for num in L]
不过,这一定是一个pythonic的方式来解决这个问题 切成 L[:1]
但当然,这种夹缝是行不通的。
有没有更好的解决办法?
你可以使用 *
拆包 zip()
.
>>> l = [(0,'a'), (1,'b'), (2,'c')]
>>> for item in zip(*l)[0]:
... print item,
...
0 1 2
对于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]
......但在我看来,这太 "聪明 "了,列表理解版更清晰。
>>> list = [(0,'a'), (1,'b'), (2,'c')]
>>> l = []
>>> for t in list:
l.append(t[0])
那么 map
map(lambda (number, letter): number, L)
在Python中切开它 2
map(lambda (number, letter): number, L)[x:y]
在 python 3 中,你必须先把它转换为 list,你可以把它转换为 numpy 数组。
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]