5.8 序列与其他类型的比较

序列对象可以用相同的序列类型来和其他的对象比较。比较操作使用了 字母排序:首先前两个元素会进行比较,如果它们不同,比较的结果就确定了;如果它们相同,接下来的两个元素再进行比较,以此类推,知道所有的序列都用完为止。如果两个进行比较的元素是相同类型的自身序列,那么 字母排序 比较就会递归的执行。如果两个序列的所有元素比较起来都相同,那么它们就可以认为是相同的。如果一个序列是另一个序列的开头的一个子序列,短的序列就是更小的 (更少)。字符串的字母排序使用了 Unicode 的点数来排列单个的字符。下面是同种类型的序列比较的例子:

  1. (1, 2, 3) < (1, 2, 4)
  2. [1, 2, 3] < [1, 2, 4]
  3. 'ABC' < 'C' < 'Pascal' < 'Python'
  4. (1, 2, 3, 4) < (1, 2, 4)
  5. (1, 2) < (1, 2, -1)
  6. (1, 2, 3) == (1.0, 2.0, 3.0)
  7. (1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)

注意,如果提供了正确的比较方法,那么使用 < 或者 > 来比较不同类型的对象是合法的。举个例子,混合数字类型根据它们的数字的值来进行比较,所以 0 和 0.0 是相等的。否则,解释器会抛出 TypeError 的异常,而不是提供一个随机的排序。