在Python中不是None的最小数目

用户名

这个问题与我的问题很接近,但并非完全相同:在Python中使用无列出最小值?我需要考虑列表中所有值均为无的可能性。

我有一种情况,我必须在数据库中查找一些数字,它们可能存在或返回为空。我需要找到这些现有数量的最小值。例如:

min_if_exists(1, 2) returns 1
min_if_exists(5, None) returns 5
min_if_exists(None, None) returns None

幸运的是,我可以做这样的事情:

def min_if_exists(a, b):
    return min(a, b)
elif a:
    return a
elif b:
    return b
else:
    return None

以下是上面提到的问题的答案:

lowest = min(x for x in (a, b) if x is not None)

但是,如果a和b为None,我将得到一个异常,因为我输入了一个空序列。我可以简单地捕获异常,也可以在序列中包含任意大的数字(a,b,100000000)。对于可能都是None的任意长数字序列,我可以(大概)用非Python方式做到这一点:

def min_if_exists(list_of_nums):
    not_a_none_exists = False
    for n in list_of_nums:
        if n is not None:
            not_a_none_exists = True
    if not_a_none_exists:
        return min(x for x in list_of_nums if x is not None)
    else:
        return None

有没有更Pythonic,更简洁的方式来做到这一点?

奥斯卡·洛佩兹(Oscar Lopez)

试试这个,这是一个pythonic解决方案:

def min_if_exists(list_of_nums):
    try:
        return min(x for x in list_of_nums if x is not None)
    except ValueError:
        return None

请记住:在Python中,寻求宽容比获得许可容易!引用文档

这种通用的Python编码风格假定有效键或属性的存在,并在假定被证明为假的情况下捕获异常。这种干净快捷的样式的特征是存在许多try和except语句。该技术与C等其他许多语言通用的LBYL(飞跃前先看)风格形成对比。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何打印Python控制台输入的最大和最小数目?

来自分类Dev

使用bash脚本查找文件中的最小数目

来自分类Dev

使用bash脚本查找文件中的最小数目

来自分类Dev

自然连接中元组的最大和最小数目

来自分类Dev

自然连接中元组的最大和最小数目

来自分类Dev

如何确定最小数目以完全断开连接的环?

来自分类Dev

如何确定最小数目以完全断开连接的环?

来自分类Dev

将关系R分解为1NF后存在的表的最小数目?

来自分类Dev

基本的Linux x86程序集最小数目返回错误

来自分类Dev

将关系R分解为1NF后存在的表的最小数目?

来自分类Dev

JS智能舍小数目

来自分类Dev

R:如何创建具有从最大数目的列到最小数目的列的二进制矩阵

来自分类Dev

在Python中,为什么list(None)错误但[None]不是错误?

来自分类Dev

即使python 3中的值不是none,方法也返回None

来自分类Dev

Python“不是None”返回None

来自分类Dev

在Python中递归地实现“最小数量的硬币”

来自分类Dev

如果在python中不是None则强制转换值

来自分类Dev

为什么在Python中我得到None而不是True / False?

来自分类Dev

如果在python中不是None则强制转换值

来自分类Dev

在Python中,为什么list(None)是一个错误,但[None]不是一个错误?

来自分类Dev

python 显示 none 而不是空白

来自分类Dev

数组中不为 0 的最小数

来自分类Dev

Python epsilon不是最小的数字

来自分类Dev

Python:列表中的最小数字,包括重复数字

来自分类Dev

为什么None在python中最小?

来自分类Dev

(x不是None)和(y不是None)和(x和y)的python区别不是None

来自分类Dev

使用javascript中的reduce函数查找数组的最小和最大数目

来自分类Dev

使用Java流从集合中查找最小和最大数目

来自分类Dev

python / Django中的小数

Related 相关文章

  1. 1

    如何打印Python控制台输入的最大和最小数目?

  2. 2

    使用bash脚本查找文件中的最小数目

  3. 3

    使用bash脚本查找文件中的最小数目

  4. 4

    自然连接中元组的最大和最小数目

  5. 5

    自然连接中元组的最大和最小数目

  6. 6

    如何确定最小数目以完全断开连接的环?

  7. 7

    如何确定最小数目以完全断开连接的环?

  8. 8

    将关系R分解为1NF后存在的表的最小数目?

  9. 9

    基本的Linux x86程序集最小数目返回错误

  10. 10

    将关系R分解为1NF后存在的表的最小数目?

  11. 11

    JS智能舍小数目

  12. 12

    R:如何创建具有从最大数目的列到最小数目的列的二进制矩阵

  13. 13

    在Python中,为什么list(None)错误但[None]不是错误?

  14. 14

    即使python 3中的值不是none,方法也返回None

  15. 15

    Python“不是None”返回None

  16. 16

    在Python中递归地实现“最小数量的硬币”

  17. 17

    如果在python中不是None则强制转换值

  18. 18

    为什么在Python中我得到None而不是True / False?

  19. 19

    如果在python中不是None则强制转换值

  20. 20

    在Python中,为什么list(None)是一个错误,但[None]不是一个错误?

  21. 21

    python 显示 none 而不是空白

  22. 22

    数组中不为 0 的最小数

  23. 23

    Python epsilon不是最小的数字

  24. 24

    Python:列表中的最小数字,包括重复数字

  25. 25

    为什么None在python中最小?

  26. 26

    (x不是None)和(y不是None)和(x和y)的python区别不是None

  27. 27

    使用javascript中的reduce函数查找数组的最小和最大数目

  28. 28

    使用Java流从集合中查找最小和最大数目

  29. 29

    python / Django中的小数

热门标签

归档