Python中float('INF')的使用

2020-04-06  本文已影响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)
  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 涉及到 < 和 > 不等式的问题:
In [8]: 12138 < float('INF')
Out[8]: True

In [9]: 12138 < float('-INF')
Out[9]: False
上一篇 下一篇

猜你喜欢

热点阅读