Given a list of Tuples, return a new list of the first values ​​of the tuples

I have a list of tuples and I want a new list consisting of the first values ​​of the tuples.

those. if the list is:

[(1.5), (4.10), (100.3), (4.8)]

I want to create the following list:

[1,4,100,4]

The following code works:

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

      

But it seems like there should be a better way, for example:

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

      

+3


source to share


5 answers


How about a list comprehension:

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

      

This will give you



[1, 4, 100, 4]

      

on request :)

+6


source


I usually used a list comprehension:



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

      

+7


source


If you don't want to understand the list, you can try this:

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

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

      

Result:

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

      

+3


source


Try the following:

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

      

+2


source


What about:

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

      

+1


source







All Articles