【发布时间】:2010-02-26 21:53:52
【问题描述】:
当比较一个元组和一个类似...的列表时
>>> [1,2,3] == (1,2,3)
False
>>> [1,2,3].__eq__((1,2,3))
NotImplemented
>>> (1,2,3).__eq__([1,2,3])
NotImplemented
...Python 不会像使用 (1,2,3) == (1,2,3) 那样对它们进行深度比较。
那么这是什么原因呢?是因为可变列表可以随时更改(线程安全问题)还是什么?
(我知道这是在CPython中实现的,所以请不要回答在哪里,而是为什么实现它。)
【问题讨论】:
-
列表不是元组,反之亦然。它们是不同的类型。
[] == ()将返回False。
标签: python list comparison tuples