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

12 投票
3 回答
19031 浏览
提问于 2025-04-15 17:57

假设我有一个包含元组的数组,叫做 s,格式如下:

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

我想返回另一个元组 t,这个元组由每一行的第一个元素组成:

t = (1, 2, 3)

那么,最有效的方法是什么呢?我当然可以直接遍历 s,但有没有更简单的方法呢?

3 个回答

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 也会返回一个迭代器。

5

Ignacio 提出的列表推导方法是最简洁的。

为了好玩,你也可以这样做:

zip(*s)[0]

*s 会把 s 展开成一个参数列表。所以它相当于

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

zip 会返回 n 个元组,每个元组里包含来自每个列表的第 n 个项目。

23

不。

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

撰写回答