`
Tonyguxu
  • 浏览: 279585 次
  • 性别: 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排序的两种方法及实例讲解

    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Python实例: &gt;&gt;&gt; list = [2,5,8,9,3] &gt;&gt;&gt; list [2,5,8,9,3] &gt;&gt;&gt; list.sort() &gt;&gt;&gt;...

    Python快速排序以及其他排序方法集合

    根据给定文件的信息,本文将详细介绍Python中几种常见的排序算法,包括插入排序(charu)、选择排序(xuanze)、冒泡排序(maopao)以及快速排序(kuaisu)。这些排序方法在数据处理、搜索算法等领域有着广泛的应用...

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

    SortedList是Python中的一个有序列表,它扩展了Python的内置list类型,提供了额外的排序功能。SortedList会自动保持其元素的排序状态,无论是插入新元素还是删除现有元素,它都会立即进行调整。这在需要频繁地对列表...

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

    在Python编程语言中,列表(list)是一种常用的数据结构,它可以容纳各种类型的元素,包括其他列表、元组等。在处理包含嵌套元组的列表时,有时我们需要对其进行排序。这里我们将深入探讨如何使用`sort()`函数对嵌套...

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

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

    python 汉字按拼音排序

    在Python编程中,汉字排序通常是一项挑战,因为汉字本身无法按照字母顺序进行排列。然而,通过将汉字转换为其对应的拼音,我们可以实现按照拼音对汉字进行排序。本篇将深入探讨如何利用Python实现这一功能,主要关注...

    sort 排序:Python List sort()方法

    `sort()` 是 Python 列表(List)的一个内置方法,用于对列表中的元素进行排序。它支持多种排序方式,包括升序、降序以及自定义排序规则等。通过 `sort()` 方法,可以方便地对列表中的元素进行排序操作,而无需借助...

    python冒泡排序 快速排序算法.zip

    在Python中,由于内置了高效的`sorted()`函数和`list.sort()`方法,通常我们不会直接使用这些原始排序算法,但在理解和学习算法时,它们是非常有价值的工具。通过理解冒泡排序和快速排序的工作原理,我们可以更好地...

    python ip地址排序算法2.0

    首先,map函数是Python内置的高阶函数,它接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回。在IP地址排序的场景下,map函数可能被用来将IP地址转换为整数,以便进行数值...

    Python排序算法

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

    python实现的冒泡排序

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

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

    ### Python中字符串List按照长度排序 在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常见排序算法汇总共2页.pdf.zip

    在Python中,内置的`sorted()`函数和`list.sort()`方法提供了便捷的排序功能,底层实现使用的是Timsort,一种结合了插入排序和归并排序优点的混合排序算法,保证了在大部分实际场景下的高效性。 了解并熟练掌握这些...

    python数列排序代码.docx

    Python中的排序功能是其强大的工具之一,特别是在处理数据和进行科学计算时不可或缺。本文将深入探讨两种主要的排序方法:`sorted()`函数和`sort()`方法,以及它们的应用。 首先,`sorted()`函数是Python内置的排序...

    基于python的排序算法-插入排序Insertion Sort

    在Python中,内置的`sorted()`函数和`list.sort()`方法使用了Timsort,这是一种混合排序算法,它结合了插入排序和其他高效的排序算法,既保证了稳定性,又能处理大部分情况下的性能问题。但在学习和理解排序算法时,...

    人工智能-项目实践-python-python lis列表排序,按字符串长度从小到大排序.zip

    在本项目实践中,我们将深入探讨Python编程语言中的一个核心概念——列表排序,特别是在人工智能领域中的应用。Python列表是数据处理和算法实现的重要工具,而排序则是处理这些数据时的常见需求。在这个项目中,我们...

Global site tag (gtag.js) - Google Analytics