如何在python中对一个tuples列表进行分片?

问题描述 投票:9回答:5

假设

L = [(0,'a'), (1,'b'), (2,'c')]

如何获取索引 0 的每 tuple 作为假装的结果。

[0, 1, 2]

为了得到这个结果,我用了 python list comprehension 并解决了这个问题。

[num[0] for num in L]

不过,这一定是一个pythonic的方式来解决这个问题 切成 L[:1]但当然,这种夹缝是行不通的。

有没有更好的解决办法?

python list python-2.7 list-comprehension slice
5个回答
7
投票

你可以使用 * 拆包 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

但你的方案已经很好了


2
投票

你的解决方案在我看来是最蟒蛇的;你也可以采用

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

......但在我看来,这太 "聪明 "了,列表理解版更清晰。


0
投票
>>> list = [(0,'a'), (1,'b'), (2,'c')]
>>> l = []
>>> for t in list:
        l.append(t[0])

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]

0
投票

你可以把它转换成一个numpy数组。

import numpy as np
L = [(0,'a'), (1,'b'), (2,'c')]
a = np.array(L)
a[:,0]
© www.soinside.com 2019 - 2024. All rights reserved.