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

在Python中获取数组中每行的第一个元素?,python,tuples,Python,Tuples,假设我有一个元组数组,s,形式如下: s = ((1, 23, 34),(2, 34, 44), (3, 444, 234)) 我想返回另一个元组,t,由每行的第一个元素组成: t = (1, 2, 3) 哪种方法最有效?当然,我可以迭代s,但是有没有更巧妙的方法呢?没有 t = tuple(x[0] for x in s) Ignacio给出的列表理解方法是最干净的 仅仅为了好玩,你还可以做: zip(*s)[0] *s将s展开为参数列表。所以它相当于 zip( (1, 23, 34)

假设我有一个元组数组,s,形式如下:

s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
我想返回另一个元组,t,由每行的第一个元素组成:

t = (1, 2, 3)
哪种方法最有效?当然,我可以迭代s,但是有没有更巧妙的方法呢?

没有

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

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

仅仅为了好玩,你还可以做:

zip(*s)[0]
*s
s
展开为参数列表。所以它相当于

zip( (1, 23, 34),(2, 34, 44), (3, 444, 234))
zip
返回
n
元组,其中每个元组包含每个列表中的
n

import itertools
s = ((1, 23, 34),(2, 34, 44), (3, 444, 234))
print(next(itertools.izip(*s)))
itertools.izip
返回迭代器。
next
函数从迭代器返回下一个(在本例中是第一个)元素

在Python2.x中,
zip
返回一个元组。
izip
使用更少的内存,因为迭代器在需要时才生成其内容


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

实际上,这是一个生成器表达式,而不是列表。