查找元组列表中的最小值和最大值

28 投票
6 回答
50891 浏览
提问于 2025-04-16 05:57
alist = [(1,3),(2,5),(2,4),(7,5)]

我需要获取元组中每个位置的最小值和最大值。

举个例子: 一个列表的预期输出是

min_x = 1
max_x = 7

min_y = 3
max_y = 5

有没有简单的方法可以做到这一点?

6 个回答

4

这里的 zip 其实不是必须的,所以可以简化成 map(max, *data)。在这里,data 是一个可以遍历的对象,它里面包含了长度相同的元组或列表。

9

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在程序中使用这些数据。这个过程就像是从冰箱里拿食材,然后用这些食材做饭。

当我们提到“数据处理”时,实际上是在说如何把这些拿到的食材(数据)整理好,准备好,才能做出美味的菜肴(结果)。

有些时候,数据可能会有点乱,比如格式不对,或者缺少一些必要的信息。这就像是冰箱里的食材过期了,或者缺少了某种调料。我们需要先把这些问题解决了,才能顺利做出我们想要的菜。

在编程中,我们通常会用一些工具和方法来帮助我们处理这些数据。比如,我们可以使用循环来一一检查每个数据,或者用条件语句来判断数据是否符合要求。

总之,数据处理就是把原本杂乱无章的数据整理成我们需要的样子,这样才能在程序中顺利使用。

>>> from operator import itemgetter
>>> alist = [(1,3),(2,5),(2,4),(7,5)]
>>> min(alist)[0], max(alist)[0]
(1, 7)
>>> min(alist, key=itemgetter(1))[1], max(alist, key=itemgetter(1))[1]
(3, 5)
64
map(max, zip(*alist))

这段代码首先会把你的列表解压开,然后找出每个元组位置上的最大值。

>>> alist = [(1,3),(2,5),(2,4),(7,5)]
>>> zip(*alist)
[(1, 2, 2, 7), (3, 5, 4, 5)]
>>> map(max, zip(*alist))
[7, 5]
>>> map(min, zip(*alist))
[1, 3]

这段代码也适用于列表中任何长度的元组。

撰写回答