精华内容
下载资源
问答
  • python中如何对列表进行排序

    千次阅读 2020-09-08 17:42:45
    @TOC# python中如何对列表进行排序 文章目录前言一、使用List成员函数List.sort()二、使用内置函数Sorted()三、使用Heapq-堆队列算法 前言 list是python语言中经常使用的数据类型,在代码实现中,会经常涉及到其...

    @TOC# python中如何对列表进行排序


    前言

    list是python语言中经常使用的数据类型,在代码实现中,会经常涉及到对其进行排序处理,这里对经常使用的一些方法进行了总结。


    一、使用List成员函数List.sort()

    >>> help(list.sort)
    Help on method_descriptor:
    
    sort(...)
        L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
    cmp(x, y) -> -1, 0, 1
    
    

    cmp – 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
    key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。
    注:一般来说,cmp和key可以使用lambda表达式。

    使用举例如下:

    lstA=[9,4,5,1,3]
    lstB=[(9,4),(4,5),(5,1),(1,3),(3,9)]
    
    lstA.sort()
    lstB.sort(key=lambda x:x[1],reverse=False)#按照第二项值进行升序排列
    
    print lstA
    print lstB
    
    [1, 3, 4, 5, 9]
    [(5, 1), (1, 3), (9, 4), (4, 5), (3, 9)]
    
    lstB.sort(key=lambda x:x[0],reverse=True)#按照第一项值进行降序排列
    print lstB
    [(9, 4), (5, 1), (4, 5), (3, 9), (1, 3)]
    
    

    二、使用内置函数Sorted()

    >>> help(sorted)
    Help on built-in function sorted in module __builtin__:
    
    sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
    
    

    iterable:是可迭代类型,这个无需多言;
    cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
    key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
    reverse:排序规则. reverse = True 或者 reverse = False,有默认值,默认升序。
    返回值:是一个经过排序的可迭代类型,与iterable一样。
    注:一般来说,cmp和key可以使用lambda表达式。sorted函数同样可对

    sort()与sorted()的不同在于,sort是在原位重新排列列表,而sorted()是产生一个新的列表。

    使用举例如下:

    lstA=[9,4,5,1,3]
    lstB=[(9,4),(4,5),(5,1),(1,3),(3,9)]
    
    print sorted(lstA)
    [1, 3, 4, 5, 9]
    print sorted(lstB,key=lambda x:x[1],reverse=True)#按照第二项值进行降序排列
    [(3, 9), (4, 5), (9, 4), (1, 3), (5, 1)]
    
    

    三、使用Heapq-堆队列算法

    Heaq这个模块提供了堆队列算法的实现,也称为优先队列算法。主要函数如下:
    heapq.heappush(heap, item) 将 item 的值加入 heap 中,保持堆的不变性
    heapq.heappop(heap) 弹出并返回 heap 的最小的元素,保持堆的不变性。如果堆为空,抛出 IndexError 。使用 heap[0] ,可以只访问最小的元素而不弹出它。
    heapq.heappushpop(heap, item) 将 item 放入堆中,然后弹出并返回 heap 的最小元素。该组合操作比先调用 heappush() 再调用 heappop() 运行起来更有效率。
    heapq.heapify(x) 将list x 转换成堆,原地,线性时间内。
    heapq.nlargest(n, iterable[, key]) 从可迭代对象中,返回最大的n个元素
    heapq.nsmallest(n, iterable[, key]) 从可迭代对象中,返回最小的n个元素

    利用堆队列算法实现对于列表的排序:

    import heapq
    
    lstA=[9,4,5,1,3]
    lstB=[(9,4),(4,5),(5,1),(1,3),(3,9)]
    
    print heapq.nsmallest(len(lstA),lstA)
    print heapq.nsmallest(len(lstB),lstB,key=lambda x:x[1])#按照第二项值进行降序排列
    
    [1, 3, 4, 5, 9]
    [(5, 1), (1, 3), (9, 4), (4, 5), (3, 9)]
    
    def heapsort(lst):#使用list数据构造堆
        rst=[]
        for x in lst:
            heapq.heappush(rst,x)
        return[ heapq.heappop(rst) for i in range(len(rst))]
    
    print heapsort(lstA)
    print heapsort(lstB)
    
    [1, 3, 4, 5, 9]
    [(1, 3), (3, 9), (4, 5), (5, 1), (9, 4)]
    
    def heapsort(lst):#直接将list转换为堆
        heapq.heapify(lst)
        return[ heapq.heappop(lst) for i in range(len(lst))]
    print heapsort(lstA)
    print heapsort(lstB)
    
    [1, 3, 4, 5, 9]
    [(1, 3), (3, 9), (4, 5), (5, 1), (9, 4)]
    
    
    展开全文
  • Python如何对列表进行排序

    千次阅读 2020-01-30 17:09:51
    列表排序有两种方式,一种是列表自带的方式 sort,一种是...由字典构成的列表,根据字典元素中的age字段进行排序: items = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}, {"name": 'cater', 'age...

    列表排序有两种方式,一种是列表自带的方式 sort,一种是内建函数 sorted。复杂的数据类型可通过指定 key参数进行排序。由字典构成的列表,根据字典元素中的age字段进行排序:

    items = [{'name': 'Homer', 'age': 39},
             {'name': 'Bart', 'age': 10},
             {"name": 'cater', 'age': 20}]
    
    items.sort(key=lambda item: item.get("age"))
    
    print(items)
    
    >>>
    [{'age': 10, 'name': 'Bart'}, {'age': 20, 'name': 'cater'}, {'age': 39, 'name': 'Homer'}]
    

    列表有 sort方法,用于对原列表进行重新排序,指定 key 参数,key 是匿名函数,item 是列表中的字典元素,我们根据字典中的age进行排序,默认是按升序排列,指定 reverse=True 按降序排列:

    items.sort(key=lambda item: item.get("age"), reverse=True)
    
    >>>
    [{'name': 'Homer', 'age': 39}, {'name': 'cater', 'age': 20}, {'name': 'Bart', 'age': 10}]
    

    如果不希望改变原列表,而是生成一个新的有序列表对象,那么可以内置函数 sorted ,该函数返回新列表:

    items = [{'name': 'Homer', 'age': 39},
             {'name': 'Bart', 'age': 10},
             {"name": 'cater', 'age': 20}]
    
    new_items = sorted(items, key=lambda item: item.get("age"))
    
    print(items)
    >>>
    [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}, {'name': 'cater', 'age': 20}]
    
    print(new_items)
    >>>
    [{'name': 'Bart', 'age': 10}, {'name': 'cater', 'age': 20}, {'name': 'Homer', 'age': 39}]
    
    展开全文
  • 主要介绍了Python3实现对列表按元组指定列进行排序的方法,结合实例形式分析了Python3针对列表排序的常见操作技巧与注意事项,需要的朋友可以参考下
  • 主要介绍了Python实现特定列表进行从小到大排序操作,涉及Python文件读取、计算、正则匹配、排序等相关操作技巧,需要的朋友可以参考下
  • 很多时候,我们需要List进行排序Python提供了两个方法,给定的List L进行排序: 方法1.用List的成员函数sort进行排序 方法2.用built-in函数sorted进行排序(从2.4开始) 这两种方法使用起来差不多,以第一种为...
  • Python对列表中的列表进行排序

    千次阅读 2020-02-26 20:33:54
    之前写过一个对列表中的字典进行排序的文章,之所以又写是因为我确实遇到了这样的题目,如果要求数据按照一定的格式存储但是又不允许使用字典那该怎么办?下面是我的作业题:将学生信息存入但是要用列表存储,相应的...

    之前写过一个对列表中的字典进行排序的文章,之所以又写是因为我确实遇到了这样的题目,如果要求数据按照一定的格式存储但是又不允许使用字典那该怎么办?下面是我的作业题:将学生信息存入但是要用列表存储,相应的列表的每一个位置对应的值是相同的,如下 位置0 是学号,位置1 是姓名,位置 位置2 是年龄 ,位置3是性别,位置4 是成绩。其实对列表中的列表进行排序就和列表中的字典排序一样:

    s = sorted(self.student_list,key=lambda st:st[4],reverse=True)
    

    如上,也是利用sorted函数,通过修改Key来让sorted按指定位置的值进行排序,这里按照的是列表中列表的第五个取值。也就是成绩的大小进行排序的。如果觉得我说的太模糊可以看我的上一篇Python中对列表中的字典元素进行排序 此篇中还介绍了sort方法,两种方法各有异同,需要自行理解一下。
    下面是我的整个代码,因为这个代码出现的此问题,一并贴出,方便大家清楚我数据的初始样子。也可以自行复制运行一下。

    class Student(object):
        def __init__(self,no,name,age,sex,grade):
            self.no = no
            self.name = name
            self.age = age
            self.sex = sex
            self.grade = grade
    
    class Grade(object):
        def __init__(self, class_name, student_list=None):
            if student_list is None:
                student_list = []
            self.class_name = class_name
            self.student_list = student_list
    
        def addStudent(self,stu):
            slist = [stu.no,stu.name,stu.age,stu.sex,stu.grade]
            self.student_list.append(slist)
        def showall(self):
            print('{}班的班级信息:\n'.format(self.class_name))
            for i in self.student_list:
                print("学号:{}\n姓名:{}\n年龄:{}\n性别:{}\n成绩:{}\n".format(i[0],i[1],i[2],i[3],i[4]))
    
        def index_no(self,no):
            print('学号{}是:'.format(no))
            for i in self.student_list:
                if no == i[0]:
                    print("姓名:{}\n年龄:{}\n性别:{}\n成绩:{}\n".format(i[1],i[2],i[3],i[4]))
    
        def fail(self):
            print('不及格的有:')
            for i in self.student_list:
                if i[4]<60:
                    print("学号:{}\n姓名:{}\n年龄:{}\n性别:{}\n成绩:{}\n".format(i[0],i[1],i[2],i[3],i[4]))
    
        def grade_sort(self):
            print('成绩由高到低:')
            s = sorted(self.student_list,key=lambda st:st[4],reverse=True)
            for i in s:
                print("学号:{}\n姓名:{}\n年龄:{}\n性别:{}\n成绩:{}\n".format(i[0],i[1],i[2],i[3],i[4]))
    
    s1 = Student('1','小伍',24,'男',100)
    s2 = Student('2','小佳',24,'女',100)
    s3 = Student('3','小李',24,'男',50)
    s4 = Student('4','小张',24,'男',51)
    s5 = Student('5','小六',24,'男',70)
    s6 = Student('6','小三',24,'男',90)
    s7 = Student('7','小四',24,'男',60)
    G1 = Grade('359')
    G1.addStudent(s1)
    G1.addStudent(s2)
    G1.addStudent(s3)
    G1.addStudent(s4)
    G1.addStudent(s5)
    G1.addStudent(s6)
    G1.addStudent(s7)
    G1.index_no('1')
    G1.fail()
    G1.showall()
    G1.grade_sort()
    
    
    
    展开全文
  • 主要介绍了Python元组和列表按条件进行排序的方法示例,需要的朋友可以参考下
  • 主要介绍了python使用sorted函数对列表进行排序的方法,涉及Python使用sorted函数的技巧,非常具有实用价值,需要的朋友可以参考下
  • 本文实例讲述了Python列表元素转为数字的方法。分享给大家供大家参考,具体如下: 有一个数字字符的列表: numbers = ['2', '4', '1', '3'] 想要把每个元素转换为数字: numbers = [2, 4, 1, 3] 1. Python2.x,...
  • 主要介绍了python实现对象列表根据某个属性排序的方法,结合具体实例形式详细分析了Python对象列表遍历、排序的两种常见操作技巧,需要的朋友可以参考下
  • Python3 对列表按元组指定列进行排序

    万次阅读 多人点赞 2017-11-16 15:44:20
    基本的列表排序 以tuple作为list的元素 扩展 以dict作为list的元素Python内建的排序方法1 排序方法介绍Python中有2个排序函数,一个是list内置的sort()方法,另一个是全局的sorted()方法sorted(iterable,ke

    Python版本: python3.+
    运行环境: Mac OS
    IDE: pycharm

    Python内建的排序方法

    1 排序方法介绍

    Python中有2个排序函数,一个是list内置的sort()方法,另一个是全局的sorted()方法

    sorted(iterable,key=None,reverse=False) #返回排好序的新列表,不改变对象本身,默认升序;reverse:-True降序 -False 正序对所有可迭代的对象均有效 
    list.sort(key=None,reverse=False) #将list自身进行排序,不返回新的list对象,默认升序;reverse:-True降序 -False 正序

    2 基本的列表排序

    1)list.sort()排序

    data = [5, 7, 9, 3, -6, -7, -8, -9, 3, -8]
    result = data.sort()
    print(data) #结果为 [-9, -8, -8, -7, -6, 3, 3, 5, 7, 9]
    print(result) #结果为None

    2)sorted()排序

        data = [5, 7, 9, 3, -6, -7, -8, -9, 3, -8]
        result = sorted(data)
        print(data) #结果为 [5, 7, 9, 3, -6, -7, -8, -9, 3, -8]
        print(result) #结果为 [-9, -8, -8, -7, -6, 3, 3, 5, 7, 9]

    3 以tuple作为list的元素

    在默认情况下sort和sorted函数接收的参数是元组时,它将会先按元组的第一个元素进行排序再按第二个元素进行排序,再按第三个、第四个…依次排序。
    我们通过一个简单的例子来了解它,以下面这个list为例:

    data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]

    我们通过sorted()对它进行排序

    data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
    result = sorted(data)
    print(data) #结果为 [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
    print(result) #结果为 [(0, 'B'), (0, 'a'), (1, 'A'), (1, 'B'), (2, 'A')]

    会发现排序后的结果中(0, ‘B’)在(0, ‘a’)的前面。这是因为在按元组第一个元素排好之后,将(0, ‘B’), (0, ‘a’)再按第二个元素进行排序了,而’B’的ASCII编码比’a’小,所以(0, ‘B’)就排在(0, ‘a’)的前面了。

    那如何想要让它排序时不分大小写呢?

    这就要用到sort方法和sorted方法里的key参数了。
    我们来看一下具体的实现:

    data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
    #利用参数key来规定排序的规则
    result = sorted(data,key=lambda x:(x[0],x[1].lower()))
    
    print(data) #结果为 [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
    print(result) #结果为 [(0, 'a'), (0, 'B'), (1, 'A'), (1, 'B'), (2, 'A')]

    其中的lambda x:(x[0],x[1].lower()可以理解为一个匿名函数;
    其功能类似于:

    def fun(x)
        return(x[0],x[1].lower())

    如果想要以字母作为第一排序规则,并且字母大小写不敏感,该怎么实现?
    这就能要运用到之前所讲到的

    在默认情况下sort和sorted函数接收的参数是元组时,它将会先按元组的第一个元素进行排序再按第二个元素进行排序,再按第三个、第四个…依次排序。

    再配合lambda返回一个自定义tuple;代码如下:

    data = [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
    #将x[1].lower()作为返回元组里的第一个元素,按照sorted的排序规律,就会先按字母排序,再按数字排序了
    result = sorted(data,key=lambda x:(x[1].lower(),x[0]))
    
    print(data) #结果为 [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')] 
    print(result) #结果为 [(0, 'a'), (1, 'A'), (2, 'A'), (0, 'B'), (1, 'B')]

    4 [扩展] 以dict作为list的元素

    这个list里的元素是dict形式,每个dict都存有姓名升高现在想要以升高进行升序排列:

    data = [{'name': '张三', 'height': 175}, {'name': '李四', 'height': 165}, {'name': '王五', 'height': 185}]
    #将x['height']最为返回tuple的第个一元素
    result = sorted(data,key=lambda x:(x['height'],x['name']))
    print(data) #结果为 
    print(result)
    #data   结果:[{'name': '张三', 'height': 175}, {'name': '李四', 'height': 165}, {'name': '王五', 'height': 185}]
    #result 结果:[{'name': '李四', 'height': 165}, {'name': '张三', 'height': 175}, {'name': '王五', 'height': 185}]
    展开全文
  • 在信息检索或top-n推荐中,我们会为用户推荐一个有序推荐列表,这里的“有序”体现在列表中前面的产品相比于列表后面的产品被算法预测为更容易被用户选择,这要求我们按每个产品出现的概率产品进行排序。...
  • python对列表里的数值进行排序

    千次阅读 2021-01-25 19:55:40
    list = [3,2,4,6,74,3,6,4,7,5,67] list.sort() print(list) list里的值会按照从小到大的顺序进行排序
  • python-列表元素绝对值排序

    万次阅读 2018-12-21 13:13:59
    列表中的所有元素按照它们的绝对值大小进行排序,绝对值相同的还保持原来的相对位置,打印排序后的列表(绝对值大小仅作为排序依据,打印出的列表中元素仍为原列表中的元素)。 可以使用以下实现列表alist的输入...
  • python对列表中的元素(字典)进行排序

    千次阅读 2020-10-20 10:13:19
    由于t值是字符串类型,那么需要将下标截取出来,然后再name进行排序 a = [ { "value": "用途", "name": "t4" }, { "value": "期初累计摊额", "name": "t10" }, { "value": "原值", "name": "t5" }...
  • 简单实现Python排序,对于Python初学者的简单排序功能,
  • Python杂谈 | (1)Python列表合并、去重和排序

    万次阅读 多人点赞 2018-10-13 14:10:27
    列表排序 一.列表合并--append() 1.列表对象的append()可以将元素追加到列表中。 2.列表对象的append()可以将另一个列表追加到当前列表中,作为当前列表的一个元素。 二.列表合并--extend() 与append()不同...
  • python对列表排序

    千次阅读 2018-10-11 16:10:37
    1、基础排序:sorted list=sorted([5, 2, 3, 1, 4]) print(list) 输出结果: [1, 2, 3, 4, 5] 2.key参数/函数 key参数的值为一个函数,此函数只有一个参数且返回一个值用来进行比较。 例如通过key指定的函数来...
  • Python中给列表进行排序的时候,出现None的结果 在Python进行排序的时候,发现重新给列表进行排序的语句,必须单独作为一行。 如果在重新给列表排序的时候,给它嵌套到其它语句中,比如说赋值语句,或者print语句,...
  • python 对列表中的字符串进行排序

    千次阅读 2020-12-09 10:50:59
    主要用到ord函数。 什么是ord函数: ord() 函数是 chr() 函数(对于8位的...Python 定义范围,则会引发一个 TypeError 的异常。 返回值 返回值是对应的十进制整数。 >>>ord('a') 97 >>> ord
  • 需要的题量多的话建议购买付费专栏(包含上百道题目答案,并持续更新中)
  • 列表学到集合,列表排序可以说是相当的简单,但是列表中如果是字典元素呢?我相信刚学的小白们肯定和我一样。 students = [ {'name': 'zhangsan', 'age': 18, 'score': 92}, {'name': 'lisi', 'age': 20, '...
  • python 字符串list中的元素进行排序

    千次阅读 2020-12-02 16:17:59
    python 字符串list中的元素进行排序引言利用`sort() 函数`list进行排序利用`sorted() 函数`list进行排序`sorted()函数`的可迭代对象iterable为字典时字典 in 操作符按照字符串中的数字的大小进行排序 ...
  • python列表排序,字典排序列表中的字典排序

    万次阅读 多人点赞 2019-05-13 13:19:20
    列表排序 方法1: 没有返回值 list1 = [2, 1, 4, 5, 3] print("最开始数据:{}".format(list1)) # 升序 list1.sort() print("升序后数据:{}".format(list1)) list1 = [2, 1, 4, 5, 3] print("最开始数据:{}"....
  • Python列表排序 list.sort方法和内置函数sorted

    万次阅读 多人点赞 2019-05-18 15:17:54
    Python列表排序 list.sort方法和内置函数sorted 很多时候我们获取到一个列表后,这个列表并不满足我们的需求,我们需要的是一个有特殊顺序的列表. ...list.sort方法会就地排序列表,也就是说不会把原列表复制一...
  • Python列表排序方法

    万次阅读 多人点赞 2019-01-26 16:25:11
    一、sort()排序方法 # 这个方法会改变a自身 a = [7,5,9,3] # True为逆序,False为正序 a.sort(reverse = False) print(a) a.sort(reverse = True) ...# 用这个方法可以将排序后的列表赋值给其他列表 a = [7,5,...
  • Python列表排序与倒序

    千次阅读 2018-12-19 13:15:16
    列表排序 sort() sorted() reverse() sort()的使用 letters = ['d','a','e','c','b'] print letters ['d','a','e','c','b'] letters.sort() print letters ['a','b','c','d','e'] sort()会自动...
  • python 二维列表排序

    千次阅读 2020-06-19 14:38:17
    例如[[ ], [ ], [ ]]这样的列表进行排序~ 第一种: 使用lambda对列表中的数据进行排序: 如果不懂lambda的可以去百度哦 有很多详细内容 按数字排序: mylist = [['张三', 0.3], ['李四', 0.4], ['王五', ...
  • Python对列表进行排序、反转

    千次阅读 2018-12-27 08:59:19
    排序: 使用sorted方法和列表的sort方法: sorted方法适用范围更广,sort方法只有列表有。 li = [{'a':'23'}, {'a':'12'}] def sort_fun(mp): s = mp['a'] return int(s) sorted(li, key = sort_fun, reverse = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 326,775
精华内容 130,710
关键字:

python对列表进行排序

python 订阅