正负无穷float('inf')的一些用法
Python中可以用如下方式表示正负无穷:
float("inf"), float("-inf")
利用 inf 做简单加、乘算术运算仍会得到 inf
>>> 1 + float('inf') inf >>> 2 * float('inf') inf
但是利用 inf 乘以0会得到 not-a-number(NaN):
>>> 0 * float("inf") nan
除了inf外的其他数除以inf,会得到0
>>> 889 / float('inf') 0.0 >>> float('inf')/float('inf') nan
通常的运算是不会得到 inf值的
>>> 2.0**2 4.0 >>> _**2 16.0 >>> _**2 256.0 >>> _**2 65536.0 >>> _**2 4294967296.0 >>> _**2 1.8446744073709552e+19 >>> _**2 3.4028236692093846e+38 >>> _**2 1.157920892373162e+77 >>> _**2 1.3407807929942597e+154 >>> _**2 Traceback (most recent call last): File "<stdin>", line 1, in ? OverflowError: (34, 'Numerical result out of range')
inf的运算规则遵从 IEEE-754 standard
不等式:
当涉及 > 和 < 运算时,
- 所有数都比-inf大
- 所有数都比+inf小
等式:
+inf 和 +inf相等
-inf 和 -inf相等
例子
给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
def maxsum(nums): max_pre = -float('inf') max_cur = -float('inf') for i in nums: max_cur = max(max_cur + i, i) max_pre = max(max_pre, max_cur) return max_pre