Python不同类型的比较

示例

Python 2.x 2.3

可以比较不同类型的对象。结果是任意的,但是是一致的。它们的排序方式None要比其他任何方式都要少,数字类型要比非数字类型要小,其他所有内容都按类型按字典顺序排序。因此,anint小于astr且atuple大于a list:

[1, 2] > 'foo'

# 出:错误

(1, 2) > 'foo'

# 出:真

[1, 2] > (1, 2)

# 出:错误

100 < [1, 'x'] < 'xyz' < (1, 'x')

# 出:真

最初这样做是为了对混合类型的列表进行排序,然后按类型将对象分组在一起:

l = [7, 'x', (1, 2), [5, 6], 5, 8.0, 'y', 1.2, [7, 8], 'z']

sorted(l)

# Out:[1.2,5,7,8.0,[5,6],[7,8],'x','y','z',(1,2)]

Python 3.x 3.0

比较不同(非数字)类型时会引发异常:

1 < 1.5

# 出:真

[1, 2] > 'foo'

# TypeError: unorderable types: list() > str()

(1, 2) > 'foo'

# TypeError: unorderable types: tuple() > str()

[1, 2] > (1, 2)

# TypeError: unorderable types: list() > tuple()

要按类型对Python 3中的混合列表进行排序并实现版本之间的兼容性,您必须提供已排序函数的键:

>>> list = [1, 'hello', [3, 4], {'python': 2}, 'stackoverflow', 8, {'python': 3}, [5, 6]]

>>> sorted(list, key=str)

# Out:[1、8,[3、4],[5、6],'hello','stackoverflow',{'python':2},{'python':3}]

使用str作为key函数的每个项目暂时转换为只为比较的目的的字符串。然后,它会看到以,或开头的字符串表示形式[,并且能够对它们(以及以下所有字符)进行排序。'{0-9

以上是 Python不同类型的比较 的全部内容, 来源链接: utcz.com/z/343167.html

回到顶部