美文网首页
Python中float('INF')的使用

Python中float('INF')的使用

作者: 时间煮菜 | 来源:发表于2020-04-06 10:02 被阅读0次

    最近在看动态规划的时候遇到了res = float('INF'),不知道是什么意思,为什么要这么使用,经过查阅,现将用法记录如下。

    def coinChange(coins: List[int], amount: int):
        def dp(n):
            # base case
            if n == 0: return 0
            if n < 0: return -1
            # 求最小值,所以初始化为正无穷
            res = float('INF')
            for coin in coins:
                subproblem = dp(n - coin)
                # 子问题无解,跳过
                if subproblem == -1: continue
                res = min(res, 1 + subproblem)
    
            return res if res != float('INF') else -1
    
        return dp(amount)
    
    • 如上面的例子中使用到的:
      float("INF")表示为正无穷;
      float("-INF")表示负无穷

    • 用法:

    1. 用INF做加法、乘法等算数运算仍然会的到inf:
    In [1]: 1 + float('INF')
    Out[1]: inf
    
    In [2]: 88 * float('INF')
    Out[2]: inf
    

    注意:这里使用INF * 0会的到not-a-number(nan)

    # 正无穷 * 0 得到nan
    In [3]: 0 * float('INF')
    Out[3]: nan
    
    1. 除了 INF 外的其他数除以 INF ,会得到0:
    In [4]: float('INF') / float('INF')
    Out[4]: nan
    
    In [5]: 2020 / float('INF')
    Out[5]: 0.0
    
    In [6]: 12138 / float('INF')
    Out[6]: 0.0
    
    1. 任何其他的数值除以 INF 都会得到 INF, 因为INF表示正无穷
    In [7]: float('INF') / 1203434
    Out[7]: inf
    
    1. 如果 INF 涉及到 < 和 > 不等式的问题:
    • 记住所有数都比 -inf 大,所有数都比 +inf 小就可以了。
    In [8]: 12138 < float('INF')
    Out[8]: True
    
    In [9]: 12138 < float('-INF')
    Out[9]: False
    

    相关文章

      网友评论

          本文标题:Python中float('INF')的使用

          本文链接:https://www.haomeiwen.com/subject/rwdvphtx.html