Python中sort和sorted快排

sort()函数和sorted()函数

sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序

1、用sort函数对列表排序时会影响列表本身,而sorted不会

  1. >>> a = [1,2,1,4,3,5]  
  2.     >>> a.sort()  
  3.     >>> a  
  4.     [112345]  
  1. >>> a = [1,2,1,4,3,5]  
  2.     >>> sorted(a)  
  3.     [112345]  
  4.     >>> a  
  5.     [121435]  

2、 sorted(iterable,cmp,key,reverse)
参数:iterable可以是 list 或者 iterator
cmp 是带两个参数的比较函数;
key   是带一个参数的函数;
reverse为False或者True;
(1) 用cmp函数排序

  1. <span style="white-space:pre">    </span>>>> list1 = [('david'90), ('mary',90), ('sara',80),('lily',95)]  
  2.     >>> sorted(list1,cmp = lambda x,y: cmp(x[0],y[0]))  
  3.     [('david'90), ('lily'95), ('mary'90), ('sara'80)]  
  4.     >>> sorted(list1,cmp = lambda x,y: cmp(x[1],y[1]))  
  5.     [('sara'80), ('david'90), ('mary'90), ('lily'95)]  
(2)用key函数排序

  1. <span style="white-space:pre">    </span>>>> list1 = [('david'90), ('mary',90), ('sara',80),('lily',95)]  
  2.     >>> sorted(list1,key = lambda list1: list1[0])  
  3.     [('david'90), ('lily'95), ('mary'90), ('sara'80)]  
  4.     >>> sorted(list1,key = lambda list1: list1[1])  
  5.     [('sara'80), ('david'90), ('mary'90), ('lily'95)]  

(3)用reverse排序

  1. <span style="white-space:pre">    </span>>>> sorted(list1,reverse = True)  
  2.     [('sara'80), ('mary'90), ('lily'95), ('david'90)]  
(4)用 operator.itemgetter 函数排序

  1. >>> from operator import itemgetter  
  2. >>> sorted(list1, key=itemgetter(1))  
  3. [('sara'80), ('david'90), ('mary'90), ('lily'95)]  
  4. >>> sorted(list1, key=itemgetter(0))  
  5. [('david'90), ('lily'95), ('mary'90), ('sara'80)]  

介绍 operator.itemgetter函数

  1. <span style="white-space:pre">    </span>>>> import operator  
  2.     >>> a = [1,2,3]  
  3.     >>> b = operator.itemgetter(0)  
  4.     >>> b(a)  
  5.     1  

operator.itemgetter函数获取的不是值,而是定义了一个函数。

(5)多级排序

  1. >>> sorted(list1, key=itemgetter(0,1))  
  2. [('david'90), ('lily'95), ('mary'90), ('sara'80)] 

猜你喜欢

转载自blog.csdn.net/pain_love/article/details/72833922