比方说,我有元组的数组,S,在形式:在Python中获取数组中每行的第一个元素?
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
,我想返回另一个元组,T,每排由第一要素:
t = (1, 2, 3)
这将是最有效的方法来做到这一点?我当然可以通过s来迭代,但有没有这样做的方式?
比方说,我有元组的数组,S,在形式:在Python中获取数组中每行的第一个元素?
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
,我想返回另一个元组,T,每排由第一要素:
t = (1, 2, 3)
这将是最有效的方法来做到这一点?我当然可以通过s来迭代,但有没有这样做的方式?
号
t = tuple(x[0] for x in s)
通过伊格纳西奥给出的列表解析方法是最干净。
只是踢,你也可以这样做:
zip(*s)[0]
*s
扩展s
到的参数列表。因此,它是相当于
zip((1, 23, 34),(2, 34, 44), (3, 444, 234))
而且zip
返回n
元组,每个元组包含来自每个列表中nth
项目。
import itertools
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
print(next(itertools.izip(*s)))
itertools.izip
返回一个迭代器。 next
函数返回迭代器中的下一个(在本例中为first)元素。
在Python 2.x中,zip
返回一个元组。 izip
使用较少的内存,因为直到需要迭代器不产生它们的内容。
在Python 3 zip
返回迭代器。
其实,这是一个生成器表达式,而不是一个列表理解。 – 2010-01-13 04:40:28