码迷,mamicode.com
首页 > 编程语言 > 详细

Python list列表的排序

时间:2016-12-21 02:12:22      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:tail   compile   false   常用   net   列表   style   pre   [1]   

当我们从数据库中获取一写数据后,一般对于列表的排序是经常会遇到的问题,今天总结一下python对于列表list排序的常用方法:

第一种:内建函数sort()

这个应该是我们使用最多的也是最简单的排序函数了,可以直接对列表进行排序

用法:

list.sort(func=None, key=None, reverse=False(or True))

对于reverse这个bool类型参数,当reverse=False时:为正向排序;当reverse=True时:为方向排序。当然默认为False。

执行完后会改变原来的list

例如:

>>> list = [2,8,4,6,9,1,3]
>>> list.sort()
>>> list
[1, 2, 3, 4, 6, 8, 9]

 

第二种:序列类型函数sorted()

这个和第一种的差别之处在于,其不会改变原来的list,而是会返回一个对象

用法:

sorted(list)

同样跟第一种方法一样,该函数也含有reverse这个bool类型的参数,当reverse=False时:为正向排序(从小到大);当reverse=True时:为反向排序(从大到小)。当然默认为False。

执行完后会有返回一个新的排序好的list对象

例如:

>>> list = [2,8,4,1,5,7,3]
>>> other = sorted(list)
>>> other
[1, 2, 3, 4, 5, 7, 8]

 

当然,有时候我们会遇到这种情况,那就是列表里面每一个元素不止一个元素(比如:列表里面,元素为元祖类型),我们除了想对第一个关键字排序之外,还想在第一次的基础上面根据第二个关键字进行排序,那么我们可以使用第三种方法。

第三种:

这种方法其实就是基于第二种sorted()函数排序的扩展。这里需要用到 lambda 表达式。

先看一个例子:

我们想先排序列表list中元素的第一个关键字,然后在第一个元素的基础上排序按第二个关键字进行排序,看结果:

>>> list = [(‘d‘,3),(‘a‘,5),(‘d‘,1),(‘c‘,2),(‘d‘,2)]
>>> print sorted(list, key = lambda x:(x[0],x[1]))
[(‘a‘, 5), (‘c‘, 2), (‘d‘, 1), (‘d‘, 2), (‘d‘, 3)]

 

还有一种:

今天遇到了这么一个问题,就是遇到一个字符串的处理问题,比如说 f10 得排在 f2 的后面。找到了这么一种方法,供参考:

参考地址:http://blog.csdn.net/houyj1986/article/details/22966799

#encoding=utf-8  
print ‘中国‘  
#根据字符串中的数字排序,如f10应该在f2后面  
import re  
  
re_digits = re.compile(r‘(\d+)‘)  
  
def emb_numbers(s):  
    pieces=re_digits.split(s)  
    pieces[1::2]=map(int,pieces[1::2])      
    return pieces  
  
def sort_strings_with_emb_numbers(alist):  
    aux = [(emb_numbers(s),s) for s in alist]  
    aux.sort()  
    return [s for __,s in aux]  
  
def sort_strings_with_emb_numbers2(alist):  
    return sorted(alist, key=emb_numbers)  
  
filelist=‘file10.txt file2.txt file1.txt‘.split()  
  
print filelist  
  
print ‘--DSU排序‘  
print sort_strings_with_emb_numbers(filelist)  
  
print ‘--内置DSU排序‘  
print sort_strings_with_emb_numbers2(filelist)  

打印结果如下:

中国
[‘file10.txt‘, ‘file2.txt‘, ‘file1.txt‘]
--DSU排序
[‘file1.txt‘, ‘file2.txt‘, ‘file10.txt‘]
--内置DSU排序
[‘file1.txt‘, ‘file2.txt‘, ‘file10.txt‘]

  

 

Python list列表的排序

标签:tail   compile   false   常用   net   列表   style   pre   [1]   

原文地址:http://www.cnblogs.com/ShaunChen/p/6205330.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!