首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么python2.x中的int(50)<str(5)?

为什么python2.x中的int(50)<str(5)?
EN

Stack Overflow用户
提问于 2010-11-24 12:44:47
回答 3查看 724关注 0票数 6

在python 3中,int(50)<'2'会导致一个TypeError,而且它应该这样做。但是,在python2.x中,int(50)<'2'返回True (其他数字格式也是如此,但int同时存在于py2和py3中)。我的问题有几个部分:

  1. 为什么Python2.x (< 3?)允许这种行为?
    • (谁认为允许这样做是个好主意?)

  2. int小于str是什么意思?
    • 它是指ord / chr吗?
    • 是否有一些不太明显的二进制格式?

  1. '5'u'5'在这方面有什么区别吗?
EN

Stack Overflow用户

发布于 2010-11-24 13:06:33

允许进行这些比较的原因是排序。Python2.x可以对包含混合类型的列表进行排序,包括字符串和整数--整数总是首先出现的。Python3.x不允许这样做,这正是您指出的原因。

Python2.x:

代码语言:javascript
运行
复制
>>> sorted([1, '1'])
[1, '1']
>>> sorted([1, '1', 2, '2'])
[1, 2, '1', '2']

Python3.x:

代码语言:javascript
运行
复制
>>> sorted([1, '1'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() < int()
票数 6
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4266918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档