两个列表的最小值和最大值

时间:2021-04-06 14:57:35

标签: python

假设我有两个列表(包含 2D 位置):

pos1 = [100, 350]
pos2 = [200, 150]

现在我想将这些位置的 min x 和 min y 存储到 minmax 中:

min_ = [min_x, min_y]
max_ = [max_x, max_y]

# in this case:

min_ = [100, 150]
max_ = [200, 350]

实际上,我使用这样的代码:

min_ = []
max_ = []

min_.append(min(pos1[0], pos2[0]))
min_.append(min(pos1[1], pos2[1]))
max_.append(max(pos1[0], pos2[0]))
max_.append(max(pos1[1], pos2[1]))

有没有更有效的方法来做到这一点?

3 个答案:

答案 0 :(得分:1)

也许是这样:

min_ = [min(first, second) for first, second in zip(pos1, pos2)]
max_ = [max(first, second) for first, second in zip(pos1, pos2)]

顺便说一下,但(也许)可读性稍差:

min_ = [min(coords) for coords in zip(pos1, pos2)]
max_ = [max(coords) for coords in zip(pos1, pos2)]

注意:就效率而言,这两种解决方案可能相当,这只是避免了一些代码重复。

答案 1 :(得分:1)

不要使用 minmax 等关键字作为变量名。 您可以使用列表理解和 zip:

minimum_values = [min(x,y) for x,y in zip(pos1, pos2)]

答案 2 :(得分:1)

如果您经常使用坐标,您会发现 numpy 使很多此类事情更符合人体工程学。

import numpy as np

pos1 = np.array([100, 350])
pos2 = np.array([200, 150])

min_ = np.min([pos1, pos2], 0)
max_ = np.max([pos1, pos2], 0)
相关问题