栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python 2如何比较string和int?为什么列表比数字大,元组比列表大?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 2如何比较string和int?为什么列表比数字大,元组比列表大?

从python 2手册:

CPython实现细节:除数字外,其他类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。

当你对两个字符串或两个数字类型进行排序时,将以预期的方式进行排序(字符串的字典顺序,整数的数字顺序)。

订购数字类型和非数字类型时,数字类型优先。

>>> 5 < 'foo'True>>> 5 < (1, 2)True>>> 5 < {}True>>> 5 < [1, 2]True

当你订购两个都不兼容的不兼容类型时,它们都不是数字,而是按其名称的字母顺序排序:

>>> [1, 2] > 'foo'   # 'list' < 'str' False>>> (1, 2) > 'foo'   # 'tuple' > 'str'True>>> class Foo(object): pass>>> class Bar(object): pass>>> Bar() < Foo()True

一个例外是旧样式类,它总是先于新样式类。

>>> class Foo: pass# old-style>>> class Bar(object): pass   # new-style>>> Bar() < Foo()False

语言规范规定了这种行为,还是由实施者决定?

有没有语言规范。该语言参考说:

否则,不同类型的对象总是比较不相等,并且被一致地,任意地排序。

因此,这是一个实现细节。

任何主要的Python实现之间都有区别吗?

我无法回答这一问题,因为我只使用了官方的CPython实现,但是还有其他Python实现,例如PyPy。

Python语言的版本之间有区别吗?

在Python 3.x中,行为已更改,因此尝试对整数和字符串进行排序将引发错误:

>>> '10' > 5Traceback (most recent call last):  File "<pyshell#0>", line 1, in <module>    '10' > 5TypeError: unorderable types: str() > int()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373689.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号