在Python中获取数组中每行的第一个元素?
假设我有一个元组数组,s,形式如下:在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 = ((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
返回一个迭代器。实际上,这是一个生成器表达式,而不是列表。