开发者

Getting the first elements per row in an array in Python?

开发者 https://www.devze.com 2022-12-16 09:35 出处:网络
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:

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

精彩评论

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

关注公众号