开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜