Python list列表的排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python list列表的排序相关的知识,希望对你有一定的参考价值。

当我们从数据库中获取一写数据后,一般对于列表的排序是经常会遇到的问题,今天总结一下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列表的排序的主要内容,如果未能解决你的问题,请参考以下文章

Python中对列表进行排序的方法都有哪些呢?

Python list列表的排序

python大神你好,请问二维列表参照一维列表排序的问题。

python 列表(list)排序总结

python中sorted函数的理解(对list列表排序,对dict字典排序)

两个list列表排序的问题