在Python中获取数组中每行的第一个元素?

时间:2010-01-13 04:31:03

标签: python tuples

假设我有一组元组s,形式为:

s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))

我希望返回另一个Tuple,t,每行包含第一个元素:

t = (1, 2, 3)

哪种方法最有效?我当然可以通过s迭代,但有没有更明智的方法呢?

3 个答案:

答案 0 :(得分:23)

没有

t = tuple(x[0] for x in s)

答案 1 :(得分:5)

Ignacio给出的列表理解方法是最干净的。

只是为了踢,你也可以这样做:

zip(*s)[0]

*ss扩展为参数列表。所以它相当于

zip( (1, 23, 34),(2, 34, 44), (3, 444, 234))

zip返回n个元组,其中每个元组包含每个列表中的nth项。

答案 2 :(得分:1)

import itertools
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
print(next(itertools.izip(*s)))

itertools.izip返回一个迭代器。 next函数从迭代器返回下一个(在本例中为第一个)元素。

在Python 2.x中,zip返回一个元组。 izip使用较少的内存,因为迭代器在需要之前不会生成内容。

在Python 3中,zip返回一个迭代器。