我有一个元组列表,我想要一个包含元组的第一个值的新列表。
即。如果列表是:
[(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
答案 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]