`
Tonyguxu
  • 浏览: 271701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python list排序

 
阅读更多

对List进行排序,Python提供了两个方法

 

---sort----
方法1.用List的内建函数list.sort进行排序

list.sort(func=None, key=None, reverse=False)
方法2.用序列类型函数sorted(list)进行排序(从2.4开始)

>>> list = [2,5,1]
>>> list
[2, 5, 1]
>>> sorted(list)
[1, 2, 5]
>>> list
[2, 5, 1]
>>> list.sort()
>>> list
[1, 2, 5]

sorted(list)返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。

list.sort() 不会返回对象,改变原有的list。

 

---reverse---

 


这两种方法使用起来差不多,以第一种为例进行讲解:
从Python2.4开始,sort方法有了三个可选的参数,Python Library Reference里是这样描述的
cmp:cmp specifies a custom comparison function of two arguments (iterable elements) 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())"
key:key specifies a function of one argument that is used to extract a comparison key from each list element: "key=str.lower"
reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.In general, the key and reverse conversion processes are much faster than specifying an
equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once.

以下是sort的具体实例。

实例1:
>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]
实例2:
>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]
实例3:对第二个关键字排序
>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(lambda x,y:cmp(x[1],y[1]))
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
实例4: 对第二个关键字排序
>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambda x:x[1])
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
实例5: 对第二个关键字排序
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>import operator
>>>L.sort(key=operator.itemgetter(1))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
实例6:(DSU方法:Decorate-Sort-Undercorate)
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort
>>>A.sort()
>>>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项
为比较关键字进行排序.
效率比较:
cmp < DSU < key
通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当

多关键字比较排序:
实例7:
>>>L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:x[1])
>>> L
>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
我们看到,此时排序过的L是仅仅按照第二个关键字来排的,

如果我们想用第二个关键字排过序后再用第一个关键字进行排序呢?有两种方法
实例8:
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
实例9:
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
为什么实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果
相等,比较第二个

分享到:
评论
1 楼 107x 2016-09-18  

相关推荐

    Python3实现对列表按元组指定列进行排序的方法分析

    Python中有2个排序函数,一个是list内置的sort()方法,另一个是全局的sorted()方法 sorted(iterable,key=None,reverse=False) #返回排好序的新列表,不改变对象本身,默认升序;reverse:-True降序 -False 正序对所有可...

    python list排序的两种方法及实例讲解

    本文主要介绍了python list排序的两种方法及实例讲解。具有很好的参考价值,下面跟着小编一起来看下吧

    Python-Python排序容器类型SortedListSortedDict和SortedSet

    Sorted Containers-Python可排序的容器类型:SortedList, SortedDict, and SortedSet使用纯python编写,但是速度跟用C实现一样快

    基于python list对象中嵌套元组使用sort时的排序方法

    下面小编就为大家分享一篇基于python list对象中嵌套元组使用sort时的排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    python实现忽略大小写对字符串列表排序的方法

    本文实例讲述了python实现忽略大小写对字符串列表排序的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下: 先来看看如下代码: string = ''' the stirng Has many line In THE fIle jb51 net ''' list...

    Python排序算法

    包含多种Python的排序算法,可以帮助使用者更好的理解各种排序算法的Python实现!

    python实现的冒泡排序

    python实现的冒泡排序算法,文件中阐述了两种方式。欢迎大家提出质疑

    Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例

    本文实例讲述了Python实现的插入排序,冒泡排序,快速排序,选择排序算法。分享给大家供大家参考,具体如下: #!/usr/bin/python # coding:utf-8 #直接插入排序 def insert_sort(list): for i in range(len(list))...

    Python对List中的元素排序的方法

    首先定义一个compare函数: def compare(sf1, sf2): if (sf1.value &gt; sf2.value): return -1; elif (sf1.value == sf2.value): return 0;...以上所述是小编给大家介绍的Python对List中的元素排

    Python中字符串List按照长度排序

    主要介绍了字符串List按照长度排序(python)的实现方法啊,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    Python 列表排序方法reverse、sort、sorted详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加入条件参数进行排序。 reverse()方法 将列表中元素反转排序,比如...

    python排序算法代码汇总

    排序算法汇总的有经常用到的冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序七种,代码可以直接测试。

    Python sorted对list和dict排序

    主要介绍了Python sorted对list和dict排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    python list多级排序知识点总结

    如果需要对python的list进行多级排序。有如下的数据: list_num = [[12,3],[18,34],[18,10],[12,45],[18,10],[8,34]] 需要从小到大的排序。先比较第一个数,如果第一个数相等的话比较第二个数。代码如下: #默认的...

    python实现排序算法解析

    本文实例为大家分享了python实现排序算法的具体代码,供大家参考,具体内容如下 一、冒泡排序 def bububle_sort(alist): """冒泡排序(稳定|n^2m)""" n = len(alist) for j in range(n-1): count = 0 for i in...

    Python List列表对象内置方法实例详解

    本文实例讲述了Python List列表对象内置方法。分享给大家供大家参考,具体如下: 前言 在上一篇中介绍了Python的序列和String类型的内置方法,本篇继续学习作为序列类型成员之一的List类型的内置方法。 软件环境 ...

    python文件排序的方法总结

    在python环境中提供两种排序方案:用库函数sorted()对字符串排序,它的对象是字符;用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名‘屏蔽’)。 (1)首先:我测试的文件夹...

    python归并排序算法过程实例讲解

    关于python的算法一直都是让我们又爱又恨,但是如果可以灵活运用起来,对我们的编写代码过程,可以大大提高效率,针对算法之一“归并排序”的灵活掌握,一起来看下吧~ 归并算法——小试牛刀 实例内容: 有 1 个无序...

    Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)

    这篇文章主要简单的介绍使用Python处理txt汉字文字、二维列表排序和获取list下标。希望文章对你有所帮助或提供一些见解~ 一. list二维数组排序 功能:已经通过Python从维基百科中获取了国家的国土面积和排名信息,...

Global site tag (gtag.js) - Google Analytics