2024-04-20 11:41:25 发布
网友
假设我有一个元组数组,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)
import itertools s = ((1, 23, 34),(2, 34, 44), (3, 444, 234)) print(next(itertools.izip(*s)))
itertools.izip返回迭代器。函数next返回迭代器中的下一个(在本例中是第一个)元素。
itertools.izip
next
在Python 2.x中,zip返回一个元组。 izip使用更少的内存,因为迭代器直到需要时才生成其内容。
zip
izip
在Python 3中,zip返回迭代器。
伊格纳西奥给出的列表理解方法是最干净的。
仅仅是踢,你也可以做:
zip(*s)[0]
*s将s展开为参数列表。所以它相当于
*s
s
zip( (1, 23, 34),(2, 34, 44), (3, 444, 234))
并且zip返回n元组,其中每个元组包含每个列表中的nth项。
n
nth
没有
itertools.izip
返回迭代器。函数next
返回迭代器中的下一个(在本例中是第一个)元素。在Python 2.x中,
zip
返回一个元组。izip
使用更少的内存,因为迭代器直到需要时才生成其内容。在Python 3中,
zip
返回迭代器。伊格纳西奥给出的列表理解方法是最干净的。
仅仅是踢,你也可以做:
*s
将s
展开为参数列表。所以它相当于并且
zip
返回n
元组,其中每个元组包含每个列表中的nth
项。相关问题 更多 >
编程相关推荐