背景环境测试应用
背景我们偶尔会在别人代码里面看到Python里面有个inf,这是干啥的呢.
环境inf代表infinite,表示无限,亦即我们高中学过的无穷.
inf分为正无穷inf或+inf和负无穷-inf
Python中的表示方法是float('inf')和float('-inf')
Python3.8 测试
把常规的运算和比较都测试一遍+ - * / % // > == < !=,结果我就直接汇总了
| 符号 | 数字 | inf | -inf |
|---|---|---|---|
| + | 1 | inf | -inf |
| 0 | inf | -inf | |
| - | 1 | inf | -inf |
| * | 1 | inf | -inf |
| 0 | nan | nan | |
| -1 | -inf | inf | |
| / | 1 | inf | -inf |
| 0 | ZeroDivisionError | ZeroDivisionError | |
| -1 | -inf | inf | |
| / | 1/ | 0.0 | -0.0 |
| 0/ | 0.0 | 0.0 | |
| -1/ | -0.0 | 0.0 | |
| % | 1 | nan | nan |
| 0 | ZeroDivisionError | ZeroDivisionError | |
| -1 | nan | nan | |
| % | 1% | 1.0 | -inf |
| 0% | 0.0 | -0.0 | |
| -1% | inf | -1.0 | |
| // | 1 | nan | nan |
| 0 | ZeroDivisionError | ZeroDivisionError | |
| -1 | nan | nan | |
| // | 1// | 0.0 | -1.0 |
| 0// | 0.0 | -0.0 | |
| -1// | -1.0 | 0.0 | |
| > | 0 | True | False |
| == | 0 | False | False |
| < | 0 | False | True |
| != | 0 | True | True |
除了*0,%1,%-1,//1,//-1为nan,其他的基本符合预期
应用这种极限值,一般会在什么时候用到呢
举个例子,求极值,也就是最大值,最小值的时候.用inf比取随机值作为初始值可要优雅而准确得多
假设有列表如下
num = [5,2,7,9,1,6,9]
我们需要求其中的最大值,常规做法如下
maxnum = num[0] for n in num: if n > maxnum: maxnum = n
但是现在我们可以这么做
maxnum = float('-inf')
for n in num:
if n > maxnum:
maxnum = n
感觉真的是优雅好多.
求最小值初始值用float('inf')就好,一样的遍历思路



