带有混合项元组和列表的意外结果排序列表

时间:2014-08-10 22:27:16

标签: python list sorting

tmp = [
    (1, 2, 3),
    (4, 5, 6),
    [7, 8, 9],
    [10, 11, 12],
]

print tmp
tmp.sort()
print tmp

结果:

[(1, 2, 3), (4, 5, 6), [7, 8, 9], [10, 11, 12]]
[[7, 8, 9], [10, 11, 12], (1, 2, 3), (4, 5, 6)]

显然列表优先于元组。 这是对的吗?

1 个答案:

答案 0 :(得分:3)

在Python 2中,

在文档https://docs.python.org/2/reference/expressions.html#not-in中,

  

内置类型的大多数其他对象比较不相等,除非它们是同一个对象;一个对象被认为是小于还是大于另一个对象的选择是在程序的一次执行中任意但一致的。

但我相信它的实现是独立的:

  

除数字外的不同类型的对象按其类型排序   名称;不支持正确比较的相同类型的对象   按地址排序。

在Python 3中,这是固定的,因此比较元组和列表会给出

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