Serjesty 2021-10-06 22:32 采纳率: 100%
浏览 49
已结题

python用 lambda 二维数组比较取最小值

在《python代码整洁之道》中,1.3.3 应该使用lambda吗
作者对于代码1-21的书写如下

data = [[7], [3], [0], [8], [1], [4]]
def min_val(data):
"""Find minimu value from the data list."""
    return min(data, key=lambda x:len(x))

在输入min_val(data)求值运行之后并不会输出“0”,而是输出“[7]”,这是作者的错误还是我的使用和理解错误(查看英文版仍然是这样的代码)?
我的理解是

min([x[i] for x in data, for i in range(len(x))])

min(data, lambda x:x[0])

因为显然比较的是data中每个list的第一个值。
另外的,如果对于二维数组对于其所有数值比较取最小值,类似 data=[[1,2,3],[4,5,6],[7,8,9],[0,-1,10]]这种又如何用min和lambda结合求出最小值“-1”呢?

  • 写回答

1条回答 默认 最新

  • 微笑的菜鸟 2021-10-06 23:12
    关注

    print(min(min(data, key=lambda x: min(x))))

    min(data, key=lambda x: min(x))把含最小元素的一组找出来
    min(min(data, key=lambda x: min(x)))再一次 min 就把这一组里面最小的取出来,也就是所有组里面最小的数字了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 已采纳回答 10月8日
  • 创建了问题 10月6日

悬赏问题

  • ¥15 luckysheet
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误