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 异常,而不是随便给出一个结果。

备注

  • 1
  • 别的语言可能会返回一个可变对象,他们允许方法连续执行,例如 d->insert("a")->remove("b")->sort();