精华内容
下载资源
问答
  • Python 列表sort函数

    2021-04-26 21:07:21
    文章目录简介一、语法二、演示1.基本用法2.有参用法总结 简介 Python和Java等编程语言一样,提供了一种自动排序的方法,Java中...(2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数 下面进..
    
    
    


    简介

    Python和Java等编程语言一样,提供了一种自动排序的方法,Java中是Arrays.sort()方法,而Python中是sort()方法,下面来详细介绍一下sort()方法的用法


    一、语法

    iterable.sort(cmp[, key[, reverse]])
    

    参数解释:

    (1)iterable指定要排序的list或者iterable

    (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数

    下面进行演示

    二、演示

    1.基本用法

    无参就是最简单的用法,对列表进行排序,默认为升序,所以排序后的lists就是输出结果图的样子

    lists = [1, 5, 0, 9, 6, 0]
    lists.sort()
    print(lists)
    

    在这里插入图片描述
    下面是降序排序,sort函数默认的reverse是False,所以如果是降序的话,就改为True

    lists = [1, 5, 0, 9, 6, 0]
    lists.sort(reverse=True)
    print(lists)
    

    输出结果如下:
    在这里插入图片描述

    2.有参用法

    lists = ["hi", "Hello", "ni", "apple"]
    lists.sort()
    print(lists)
    

    大家觉得排序结果会是什么样子的?先按照首字母大小写排序,再按照二十六个字母的顺序进行排序,如下图:

    在这里插入图片描述
    此处使用key,根据key指定的规则来进行排序,如下图:

    lists = ["hi", "Hello", "ni", "apple"]
    # str.lower 忽略字符串的大小写
    lists.sort(key=str.lower)
    print(lists)
    

    我们排序的时候忽略大小写进行排序,所以排序结果就会截然不同,如下:
    在这里插入图片描述
    再演示一个例子,一个非常经典的例子,看如下代码:

    lists = [1, 5, 0, 9, 6, 0]
    lists.sort(key=bool)
    print(lists)
    

    是不是感觉很奇怪,为什么数字列表排序规则是bool类型?其实并不奇怪,bool类型就是对0和非0元素进行排序,在这个规则下,0为一种,非0为另外一种,所以排序结果就是
    在这里插入图片描述
    可以看见,只有0的位置变了,非0的元素并未进行排序,这是LeetCode上的一道题,有兴趣的可以看看
    移动零


    总结

    key不仅仅可以用一些简单的函数,还可以使用lambda表达式

    展开全文
  • 现有列表ll=[(1,2),(4,5),(8,9),(1,1),(4,3),(8,20)],要实现排序,排序规则为:按元组第一个元素降序,如果元祖第一个元素相同按元祖第二个元祖升序。 import functools def tcmp(x,y): #只能返回[-1,0,1]分别...

    首先基本的应用请参考其它教程,百度很多。

    现有列表ll=[(1,2),(4,5),(8,9),(1,1),(4,3),(8,20)],要实现排序,排序规则为:按元组第一个元素降序,如果元祖第一个元素相同按元祖第二个元祖升序。
    import functools
    
    def tcmp(x,y):
        #只能返回[-1,0,1]分别对应逆序,不变,升序
        if x[0]!=y[0]:
            #因为排序默认为升序排序,所以在x[0]>y[0]情况下,要想让x[0]在y[0]前面
            #也就是逆序,所以要返回-1
            return -1 if x[0]>y[0] else 1
        elif x[1]!=y[1]:
            return 1 if x[1]>y[1] else -1
        else:
            #按原来顺序
            return 0
    
    if __name__=="__main__":
        ll=[(1,2),(4,5),(8,9),(1,1),(4,3),(8,20)]
        ll.sort(key=functools.cmp_to_key(tcmp))#python3没有cmp关键字,所以必须把cmp函数转换为key
        print(ll)
    

    输出:[(8, 9), (8, 20), (4, 3), (4, 5), (1, 1), (1, 2)]

    展开全文
  • 1.函数用途 我们需要对List进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1....方法2....sort函数定义:sort(cmp=None, key=None, reverse=False) sorted函数定义:sorted(iterable...

    1.函数用途

    我们需要对List进行排序,Python提供了两个方法
    对给定的List L进行排序,
    方法1.用List的成员函数sort进行排序
    方法2.用内建函数sorted进行排序(从python 2.4开始)

    2.函数定义及参数解析

    sort函数定义:sort(cmp=None, key=None, reverse=False)

    sorted函数定义:sorted(iterable, cmp=None, key=None, reverse=False)

    参数解析:

    iterable:是可迭代类型;
    cmp:用于比较的函数(大于时返回1,小于时返回-1,等于时返回0),比较什么由key决定,有默认值,迭代集合中的一项;
    key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;

             cmp与key均可以采用lambda表达式
    reverse:排序规则. reverse = False,默认为False,升序排列或者reverse = True 。

    注:python3.x中取消了cmp参数,也不支持直接往sort()里面传函数,但可以构造排序函数传递给key来实现。

    3.二者的区别

    sort( )函数与sorted( )函数最大的区别是, sort( )函数是对已存在的列表进行操作(改变原列表的值),调用其没有返回值;而sorted( )函数是返回一个新的list,不在原来的list上进行操作(不改变原列表的值),调用其返回一个排好序的list

    4.函数示例

    L = [5, 2, 3, 1, 4]

    #sorted()
    >>> sorted(L)

    >>>print(L)     #L不改变

    >>>print(sorted(L))

    [5, 2, 3, 1, 4]   
    [1, 2, 3, 4, 5]

    #sort()
    >>>
    >>> L.sort()
    >>> print (L)   #L改变
    [1, 2, 3, 4, 5]

    1、基于key 

    接受一个key函数来实现自定义的排序,

    key指定的函数将作用于list中的每一个元素上,根据key函数返回的结果进行排序。
    L = [(‘a’, 3), (‘d’, 2), (‘c’, 1), (‘b’, 4)]
    a = sorted(L, key=lambda x : x[0])
    b = sorted(L, key=lambda x : x[1])
    print L
    print a
    print b
    输出:
    [(‘a’, 3), (‘d’, 2), (‘c’, 1), (‘b’, 4)]
    [(‘a’, 3), (‘b’, 4), (‘c’, 1), (‘d’, 2)]
    [(‘c’, 1), (‘d’, 2), (‘a’, 3), (‘b’, 4)

    注:lambda匿名函数(也叫lambda表达式)的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。

    来看看字符串排序的问题:

    >>> sorted(['abc','Abc','Cba','bAc'])
    ['Abc', 'Cba', 'abc', 'bAc']

    默认的,对于字符串,sorted函数按照ASCII的大小进行排序,因为C<a,大写的C会排在小写的a前面。

    如果我们想要达到忽略大小写的排序,只需要更改一下key函数:

    >>> sorted(['abc','Abc','Cba','bAc'],key=str.lower)
    ['abc', 'Abc', 'bAc', 'Cba']

    结合lambda关键字按年龄排序:

    students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    sorted(students, key=lambda s: s[2]) #按年龄排序
    
    #输出结果
    [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
    

    进一步,要进行反向排序,可以传入第三个参数reverse=True:

    >>> sorted(['abc','Abc','Cba','bAc'],key=str.lower,reverse=True)
    ['Cba', 'bAc', 'abc', 'Abc']
    

    2、基于reverse
    L = [2, 1, 4, 9, 6]
    a = sorted(L, reverse=True)
    b = sorted(L, reverse=False)
    print L
    print a
    print b
    输出:

    [2, 1, 4, 9, 6]
    [9, 6, 4, 2, 1]
    [1, 2, 4, 6, 9]

    展开全文
  • 描述:sort()函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。 方法:list.sort(iterable,cmp=None, key=None, reverse=False) iterable --指定要排序的list或者iterable,不用多说 cmp...

    sort(seq)

    描述:sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。

    方法:list.sort(iterable,cmp=None, key=None, reverse=False)

    1. iterable --指定要排序的list或者iterable,不用多说
    2. cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
    3. key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    4. reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

    示例:

    if __name__ == "__main__":
    	list_a = [(1,'d'),(2,'b'),(3,'c')]
    	list.sort(list_a,cmp = lambda x,y:cmp(x[1],y[1]))
    	print list_a
    	
    	list.sort(list_a,cmp = lambda x,y:cmp(x[0],y[0]))
    	print list_a
    	
    	list.sort(list_a,key = lambda x:x[1])
    	print list_a
    	
    	list.sort(list_a,reverse = True)
    	print list_a
    	

    输出结果:

    解析:

    我们按参数进行解析,第一个参数是要排序的列表,这个自然不必多说。

    第二个参数是cmp,这个是一个比较函数,函数的实体我们用了一个Python内建的隐含函数lamdba,我们先来了解下lamdba 函数的使用方法

    lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数

    lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。

    add = lambda x, y : x+y
    add(1,2)  # 结果为3

    示例中我们用 list.sort(list_a,cmp = lambda x,y:cmp(x[1],y[1])),其中lambda x,y:cmp(x[1],y[1])就是用列表中第二个元素作比较,所以输出的就是:(2,'b'),(3,'c'),(1,'d')

    list.sort(list_a,cmp = lambda x,y:cmp(x[0],y[0]))这条语句的意思就是以第一个元素作比较,输出是:(1,'d'),(2,'b'),(3,'c')

    第三个排序方法我们用了key这个参数

    list.sort(list_a,key = lambda x:x[1]),这条语句的意思是用列表中的第二个元素比较,所以输出的就是:(2,'b'),(3,'c'),(1,'d')

    最后一条用list.sort(list_a,reverse = True),reverse=True表示按降序排列,所以输出:,(3,'c'),(2,'b'),(1,'d')

    展开全文
  • 在for… in…循环中,常常涉及到依次取值迭代,就需要对列表的取值进行定义,用到range( )函数。 range( )函数的使用方法: tips:range(起点,终点,步进)函数是只包含起点,不包含终点; range(10),默认 0 ...
  • list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)一、基本形式列表有...
  • print l2 这两种都有个缺点,祛除重复元素后排序变了: ['a', 'c', 'b', 'd'] 如果想要保持他们原来的排序: 用list类的sort方法 l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) l2.sort(key=l1.index) ...
  • 列表的介绍和定义python中的列表由一系列按特定顺序排列的元素组成。在python中,使用方括号([])来表示列表列表中的各个元素使用逗号(,)来分割。>>> mylist=['python','java','dotnet']>>> ...
  • 不知道大家在做项目时候,有没有遇到这个函数,记得小编第一次看到这个函数,一直纳闷这...(1)使用范围不一样只有当对象是列表时,才能调用sort()方法,而sorted()是全局函数,可作用于所有可迭代对象。(2)返回结果...
  • 不知道大家在做项目时候,有没有遇到这个函数,记得小编第一次看到这个函数,一直纳闷这...(1)使用范围不一样只有当对象是列表时,才能调用sort()方法,而sorted()是全局函数,可作用于所有可迭代对象。(2)返回结果...
  • python sort()用法一个字典 adic = {1:98,2:12,3:78} 对这个排序: alist= [] for i in adPython中的sort()方法用于数组排序,下面以实例形式对此加以详细说明: 一、基本形式 列表有自己的sort方法,其对列表进行...
  • 不知道大家在做项目时候,有没有遇到这个函数,记得小编第一次看到这个函数,一直纳闷这...(1)使用范围不一样只有当对象是列表时,才能调用sort()方法,而sorted()是全局函数,可作用于所有可迭代对象。(2)返回结果...
  • sort函数和sorted函数

    2019-10-29 19:19:53
    b = [1,2,6,2,7,9,5] print(b.sort(reverse=True))...结果表明sort函数不会产生新列表,返回值为None b = [1,2,6,2,7,9,5] c = set(b) print(c) print(list(sorted(b,reverse=True))[1]) print(c) {1, 2, 5, 6, 7, ...
  • 对数字型变量进行排序 a = [1,5.67,3,5,7,4,2] a.sort() print(a) [1, 2, 3, 4, 5, 5.67, 7] 对字符串的长度进行排序 b = ['I','python','love'] b.sort(key=len) print(b) ['I', 'love', 'python']
  • 使用列表对象的sort()方法实现sort方法语法格式:listname.sort(key = none,reverse = False)参数说明:listname: 表示要排序的列表key: 表示在指定列表选择一个用于比较的键,如果设置 'key = str.lower' ,则表示在...
  • (我在这里使用python2)比如说,我有一份字典的清单dei = [{'name': u'Thor'}, {'name': u'Œdipus'}, {'name': u'Creon'}]我想按它们的'name'属性对该列表进行排序。这很容易做到:^{pr2}$现在,由于Python的字母...
  • sort函数和sorted函数都是python内置的排序函数。那为什么会有2个排序函数呢? 总结一下,虽然都是内置的排序功能,但是还是有差异的。 1 sort原位排序,无返回值;sorted保留原对象,返回一个排序完的对象。 2 ...
  • sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序 sort和sorted的比较 1、用sort函数列表排序时会影响列表本身,而sorted不会 举例: >>> a = [1,2,1,4,3,5] >>> a.sort() >>> a [1, ...
  • python3 语法小记(一)sort函数 sorted函数

    万次阅读 多人点赞 2018-11-24 19:56:36
    1、sort函数是应用到list上的,属于列表的成员方法,sorted可以对所有的可迭代对象进行排序操作。 2、list的sort方法返回的是对已经存在的列表进行操作,无返回值;而内建函数sorted返回的是一个新的列表,不是在...
  • sort函数的参数列表中的第三个参数可以是一个函数指针,一般使用cmp作为函数指针的命名: vector<int> vec; bool cmp(const T a, const T b){ return a > b; } sort(vec.begin(), vec.end(), cmp); c
  • sort函数用法

    2019-03-16 13:35:26
    一、基本形式 列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,...获取已排序的列表副本的方法是使用sorted函数: x =[4, 6, 2, 1, 7, 9] y = sorted(x) print y #[...
  • 列表排序|sort()函数

    2020-04-06 17:23:12
    1.sort()函数列表中,默认为升序 >>> ls=[2,3,6,89] >>> ls.sort() #默认为升序 >>> ls [2, 3, 6, 89] >>> ls.sort(reverse= True) #降序 >>> ls [89, 6, 3, 2] ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,320
精华内容 928
关键字:

列表sort函数