python 再大值最小值_Python:可用的最大值和最小值

Python 2.x允许比较异构类型。

一个有用的快捷方式(在这里是Python 2.7)是None比较小于任何整数或浮点值:>>> None < float('-inf') < -sys.maxint * 2l < -sys.maxint

True

在Python 2.7中,空元组()是一个无限值:>>> () > float('inf') > sys.maxint

True

当您可能对int和float的混合列表进行排序并希望有绝对的最小值和最大值可供引用时,此快捷方式非常有用。

但是,在Python 3000中已删除此快捷方式(这是Python 3.2):>>> None < 0

Traceback (most recent call last):

File "", line 1, in

TypeError: unorderable types: NoneType() < int()

此外,Python3000has removedsys.maxint基于所有int都会促进long且该限制不再适用的理论。

PEP 326,一个顶部和底部值的大小写,在Python中高级了一个引用min和max。新的排序行为documented。

既然PEP 326被拒绝了,那么对于在Python 2X和Python 3000上处理整数、浮点数和长整数的最小值和最大值,有什么有用的、可用的定义呢?

编辑

有几个答案是“只要使用maxv=float('inf')”。。。不管可能性有多小,我想的原因是:>>> float(2**5000)

Traceback (most recent call last):

File "", line 1, in

OverflowError: long int too large to convert to float

以及:>>> cmp(1.0**4999,10.0**5000)

Traceback (most recent call last):

File "", line 1, in

OverflowError: (34, 'Result too large')

然而:>>> () > 2**5000

True

为了将cmp转换为浮点值float('inf'),长值将需要转换为浮点值,并且转换将导致OverflowError。。。

结论

谢谢大家的回答和评论。我选择了锥虫的answer,因为它似乎最符合我的要求:一个绝对最大和绝对最小的值,如维基百科中所描述的entry on infinity.

有了这个问题,我了解到long或int值不会转换为float来完成float('inf') > 2**5000的比较。我不知道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值