API:为什么Python数组没有排序方法?

时间:2014-04-01 10:15:36

标签: python api sorting

我知道sorted()内置函数。这是一个API设计问题,而不是一个操作方法问题。我想知道为什么list类型有.sort()方法来对其内容进行排序,但其他可变序列类型(如array.arraybytearray则不会。

1 个答案:

答案 0 :(得分:2)

排序代码库(由sorted()list.sort()使用,专门用于list对象,适用于排序python 对象;可以实现的项目定制特殊方法,指示订购。

因此,该代码不易重用于array.arraybytearray类型,这些类型仅处理同类C类型数据。

相反,你需要为这些类型实现一个专用的排序方法,利用你在这里基本处理基本C类型的事实。并且还没有人这样做,这实际上只是 这些类型没有专用.sort()方法的原因。

解决方法是使用sorted()并重新投射为原始类型:

a = array.array(a.typecode, sorted(a))
b = bytearray(sorted(b))

numpy ndarray类型确实有.sort() method;也许你应该使用那个库,如果你需要进行大量的排序。