Python2.7在列表中查找最小值和最大值

2024-05-16 22:54:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个Python的NoOB,来自C/C++。 我在用一个加速计连接到一个Beaglebone Black。我从加速计中收集6个[X,Y,Z]读数:

calib = [[-72, -80, -673], [-31, -1673, 481], [-29, -62, 1564], [-148, 1464, 545], [-1513, -67, 539], [1350, -80, 480]]

我需要从这组6个读数中找出XYZ的最小值和最大值。 我的代码是:

max = [0] * 3
min = [0] * 3

for ndx, sample in enumerate(calib):
    x, y, z = calib[ndx]
    if x > max[0]:
        max[0] = x
    if x < min[0]:
        min[0] = x
    if y > max[1]:
        max[1] = y
    if y < min[1]:
        min[1] = y
    if z > max[2]:
        max[2] = z
    if z < min[2]:
        min[2] = z

print "min", min
min [-1513, -1673, -623]

print "max", max
max [1350, 1464, 1564]

这看起来很管用,但看起来不像“Python”。必须有一个更干净的方法来做这件事。有什么建议吗?


Tags: sample代码inforifminmaxblack
1条回答
网友
1楼 · 发布于 2024-05-16 22:54:22

首先,重新映射该列表,为您提供xyz列表的列表:

xyz = zip(*calib)

然后将min和max映射到列表:

>>> map(min, xyz)
[-1513, -1673, -673]

>>> map(max, xyz)
[1350, 1464, 1564]

或者作为一个列表理解:

>>> [(min(a), max(a)) for a in zip(*calib)]
[(-1513, 1350), (-1673, 1464), (-673, 1564)]

相关问题 更多 >