2012-03-28 139 views
3

我有一個元組列表,我想要一個新的列表,它包含元組的第一個值。給出一個元組列表,返回元組第一個值的新列表

I.e.如果該列表是:

[(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 

回答

6

如何列表理解:

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

這會給你

[1, 4, 100, 4] 

的要求:)

7

我通常用一個列表理解:

>>> a = [(1,5),(4,10),(100,3),(4,8)] 
>>> [x for x, y in a] 
[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對於a)中的e可以簡化爲a。 – 2012-03-28 18:53:03

+1

你也應該使用'operator.itemgetter(0)'。如果內置的功能執行相同的操作,則無需使用用戶定義的功能。 – agf 2012-03-28 19:07:03

3

如果你不想做的列表理解,你可以試試這個:

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

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

結果:

>>> first_vals 
[1, 4, 100, 4] 
相關問題