给定一个元组列表,返回元组的第一个值的新列表

时间:2012-03-28 18:46:10

标签: python

我有一个元组列表,我想要一个包含元组的第一个值的新列表。

即。如果列表是:

[(1,5),(4,10),(100,3),(4,8)]

我想创建以下列表:

[1,4,100,4]

以下代码有效:

a = [(1,5),(4,10),(100,3),(4,8)]
l = []
for i in range(len(a)):
    l.append(a[i][0])

但似乎应该有更好的方法,例如:

l = itertools.chain(for i in range(len(a)) a[i][0]) #This won't work

5 个答案:

答案 0 :(得分:7)

我通常使用列表理解:

>>> a = [(1,5),(4,10),(100,3),(4,8)]
>>> [x for x, y in a]
[1, 4, 100, 4]

答案 1 :(得分:6)

列表理解如何:

l=[(1,5),(4,10),(100,3),(4,8)]
print [x[0] for x in l]

这会给你

[1, 4, 100, 4]

按要求:)

答案 2 :(得分:3)

如果您不想进行列表理解,可以试试这个:

x = [(1,5),(4,10),(100,3),(4,8)]

first_vals = list(zip(*x)[0])

结果:

>>> first_vals
[1, 4, 100, 4]

答案 3 :(得分:2)

试试这个:

>>> a = [(1,5),(4,10),(100,3),(4,8)]
>>> [b[0] for b in a]
[1, 4, 100, 4]

答案 4 :(得分:1)

怎么样:

>>> map(lambda e: e[0], (e for e in a))
[1, 4, 100, 4]