给定一个元组列表,返回一个新的列表,其中只包含元组中第一个值。

3
我有一个元组列表,我想要一个新的列表,由元组的第一个值组成。
例如,如果列表是:
[(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个回答

8

我通常会使用列表推导式:

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

7
如何使用列表推导式:

你可以考虑使用列表推导式:

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

这将为您提供。
[1, 4, 100, 4]

as requested :)


3

如果您不想使用列表推导式,您可以尝试以下方法:

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

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

结果:

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

2

试试这个:

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

1

这样怎么样:

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

5
(e for e in a) 可以简化为 a - Sven Marnach
1
另外,您应该使用 operator.itemgetter(0)。当存在内置函数可以完成相同的操作时,无需使用自定义函数。 - agf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接