加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python 2.7在列表列表中找到min,max

发布时间:2020-12-20 12:30:45 所属栏目:Python 来源:网络整理
导读:参见英文答案 Python: Find the min,max value in a list of tuples????????????????????????????????????5个 我是Python的菜鸟,来自C/C++. 我正在使用连接到Beaglebone Black的加速度计.我从加速度计收集6个[X,Y,Z]读数: calib = [[-72,-80,-673],[-31,-16
参见英文答案 > Python: Find the min,max value in a list of tuples????????????????????????????????????5个
我是Python的菜鸟,来自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,480]]

我需要从这组六个读数中找到X,Y和Z的最小值和最大值.
我的代码是:

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,-623]

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

这似乎工作,但只是看起来不像“pythonic”.必须有一个更清洁的方法来做到这一点.有什么建议?

解决方法

首先,重新映射列表以提供x,y和z列表的列表:

xyz = zip(*calib)

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

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

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

或者作为一个列表理解:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读