最近写Python经常需要使用排序,Python2.7内置了两个排序函数,分别是sort和sorted,那么他们的用法和相互的区别是什么样子的呢。
先说说sort()。
s.sort(_[cmp[, key[, reverse]]]_)
_cmp_ specifies a custom comparison function of two arguments (list items) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument:
cmp=lambda x,y:cmp(x.lower(), y.lower())
. The default value isNone
._key_ specifies a function of one argument that is used to extract a comparison key from each list element:
key=str.lower
. The default value isNone
._reverse_ is a boolean value. If set to
True
, then the list elements are sorted as if each comparison were reversed.
sort()函数能够作用于Python的内置可变序列类型,即除了字符串和元组之外的其他序列,如列表和字典。
|
|
再看看sorted()函数。
sorted(_iterable_[, _cmp_[, _key_[, _reverse_]]])
Return a new sorted list from the items in _iterable_.
sorted函数能够作用于任何可迭代的序列类型,包括字符串,元组,列表,字典等,或者是自定义的可迭代的类(需申明iter函数和next函数)。
|
|
对比可见。
- sort()会改变原本的序列,返回None,而sorted()并不改变原本的序列,而是返回一个新的已排序列表。
- sorted()的应用范围比sort()更广泛一点。
- sorted()的排序速度要比sort()慢,因为它需要生成一个列表的复制以储存排序结果。