假设我有两个列表(包含 2D 位置):
pos1 = [100, 350]
pos2 = [200, 150]
现在我想将这些位置的 min x
和 min y
存储到 min
和 max
中:
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]))
有没有更有效的方法来做到这一点?
答案 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)
不要使用 min
和 max
等关键字作为变量名。
您可以使用列表理解和 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)