Getting the first elements per row in an array in Python?
Let's say i have an array of Tuples, s, in the form of:
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
and i want to return another Tuple, t, consisting of the first elemen开发者_如何学Ct per row:
t = (1, 2, 3)
Which would be the most efficient method to do this? I could of course just iterate through s, but is there any slicker way of doing it?
No.
t = tuple(x[0] for x in s)
The list comprehension method given by Ignacio is the cleanest.
Just for kicks, you could also do:
zip(*s)[0]
*s
expands s
into a list of arguments. So it is equivalent to
zip( (1, 23, 34),(2, 34, 44), (3, 444, 234))
And zip
returns n
tuples where each tuple contains the nth
item from each list.
import itertools
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
print(next(itertools.izip(*s)))
itertools.izip
returns an iterator. The next
function returns the next (and in this case, first) element from the iterator.
In Python 2.x, zip
returns a tuple.
izip
uses less memory since iterators do not generate their contents until needed.
In Python 3, zip
returns an iterator.
精彩评论