Reputation: 669
What's the most compact way to return the following:
Given a list of tuples, return a list consisting of the tuples first (or second, doesn't matter) elements.
For:
[(1,'one'),(2,'two'),(3,'three')]
returned list would be
[1,2,3]
Upvotes: 38
Views: 39216
Reputation: 35269
>>> mylist = [(1,'one'),(2,'two'),(3,'three')]
>>> [j for i,j in mylist]
['one', 'two', 'three']
>>> [i for i,j in mylist]
[1, 2, 3]
This is using a list comprehension (have a look at this link). So it iterates through the elements in mylist
, setting i
and j
to the two elements in the tuple, in turn. It is effectively equivalent to:
>>> newlist = []
>>> for i, j in mylist:
... newlist.append(i)
...
>>> newlist
[1, 2, 3]
Upvotes: 14
Reputation: 3020
use zip if you need both
>>> r=(1,'one'),(2,'two'),(3,'three')
>>> zip(*r)
[(1, 2, 3), ('one', 'two', 'three')]
Upvotes: 53
Reputation: 336128
>>> tl = [(1,'one'),(2,'two'),(3,'three')]
>>> [item[0] for item in tl]
[1, 2, 3]
Upvotes: 42