Python中如何排序

sort()

具体形式:iterable.sort(cmp[, key[, reverse]])

1
2
a = ['3','5','1','7']
a.sort()

要点:

  • sort()是list的方法,只能用于list而不能用在其他的iterable对象
  • 会修改调用它的list对象本身

sorted()

具体形式:sorted(iterable, [key=None,reverse=False])

sorted() 常常用于对list进行排序,而且不改变list本身。实际可用于任何可迭代对象(iterable)

1
2
3
a = [3, 5, 1, 7]
print(sorted(a)) ## [1, 3, 5, 7]
print a ## [3, 5, 1, 7]

reverse控制排序方向

它的可选参数之一是: reverse. e.g. reverse = True, sorted(list, reverse = True) 将得到反向排序的结果。

1
2
3
strs = ['aa','BB','zz','CC']
print(sorted(strs)) ## ['BB', 'CC', 'aa', 'zz']
print(sorted(strs, reverse = True)) ## ['zz', 'aa', 'BB', 'CC']

key= ‘定制化排序‘

可在排序之前对对象的每个元素做处理,然后对处理结果进行排序。
另一个例子:

1
2
strs = ['ccc', 'aaaa', 'd', 'bb']
print(sorted(strs, key = len)) ## ['d', 'bb', 'ccc', 'aaaa'], 实现了对list中的字符串的长度进行排序

要点:

  • 返回一个新的、排好序的list,不改变原始的iterable
  • key 和 reverse 是两个可选参数,但必须作为keyword arguments被指定。e.g.: reverse = False
  • key指定了一个只含一个参数的、用于从list的每个元素选择比较的对象的函数(比较绕口,其实就是指明比较list中元素的什么?长度?首字母?or 其他):key = str.lower(). 默认值为None,即:直 接比较list中的元素

sort_values()

详解:DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’))

参数 说明
by 2
axis x
ascending x
inplace x
kind na_position

返回值:storted obj(DataFrame)

坚持原创分享,您的支持是我继续创作的动力!