在这里想知道,在程序中使用变量存储无限值有什么意义?是否有任何实际用途,是否有任何情况下最好使用foo = float('Inf')
,或者它只是为了放入它而卡住的一小段?
答案 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)
添加了许多浮点功能。 float()函数现在将 将字符串nan转换为IEEE 754 Not A Number值,+ inf和 -inf为正或负无穷大。这适用于任何具有IEEE 754语义的平台。 (供稿人:Christian Heimes;问题 1635。)
答案 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"