Python中浮点数('Inf')有什么意义?

时间:2015-12-14 10:28:56

标签: python

在这里想知道,在程序中使用变量存储无限值有什么意义?是否有任何实际用途,是否有任何情况下最好使用foo = float('Inf'),或者它只是为了放入它而卡住的一小段?

5 个答案:

答案 0 :(得分:49)

它作为无限的上限值进行比较。这对于找到某些东西的最低值很有用。例如,在遍历树时计算路径路径成本。

e.g。找到最便宜的"选项列表中的路径:

>>> lowest_path_cost = float('inf')
>>> # pretend that these were calculated using some worthwhile algorithm
>>> path_costs = [1, 100, 2000000000000, 50]
>>> for path in path_costs:
...   if path < lowest_path_cost:
...     lowest_path_cost = path
...
>>> lowest_path_cost
1

如果您没有float('Inf')可用,那么您对the initial lowest_path_cost使用的价值是多少? 9999999是否足够 - float('Inf')可以消除这种猜测。

答案 1 :(得分:11)

来自documentation

  

添加了许多浮点功能。 float()函数现在将   将字符串nan转换为IEEE 754 Not A Number值,+ inf和   -inf为正或负无穷大。这适用于任何具有IEEE 754语义的平台。 (供稿人:Christian Heimes;问题   1635。)

另请参阅:Working with Infinity and NaNs

答案 2 :(得分:3)

float('inf')

如上面答案中所述,float('inf')用于设置具有无限大值的变量。 简而言之,它将值设置为 + ve infinty

替代,我们可以使用以下语句,

import sys
least_value = sys.maxsize

sys.maxsize更常用,最初用于设置较大的值。当我们的目标是从给定的一组值中找到最小值时。

此外,如果我们要从给定值集中找到最大值。我们可以使用以下内容。

import sys
greatest_value = -sys.maxsize - 1

# logic for comparing with rest of values

-sys.maxsize - 1用于将初始值设置为-ve infinity。

答案 3 :(得分:0)

float('inf')可用于比较,从而使代码更简单明了。例如,在合并排序中,可以将float('inf')作为子标记值添加到子数组的末尾。不要与数学中无穷大的使用相混淆,毕竟,编程不仅仅涉及数学。

答案 4 :(得分:0)

而不是使用0,然后您需要处理负数(如果有的话),float(“ + inf”)和float(“-inf”)有助于比较正负无穷,例如:

找到字典中的最大值:

def max_key(my_dict):
    largest_key = float("-inf")
    largest_value = float("-inf")

    for key, value in my_dict.items():
      if value > largest_value:
          largest_value = value
          largest_key = key
    return largest_key


print(max_key({1:100, 2:1, 3:4, 4:10}))      # should print 1

print(max_key({"a":100, "b":10, "c":1000}))  # should print "c"