• sort and sorted 区别


    sort是容器的函数:sort(cmp=None, key=None, reverse=False)

    对于一个无序的列表list,调用list.sort(),对list进行排序后返回list,sort()函数修改待排序的列表内容。

    对原列表进行排序

    通过查询,新版本中 sort参数只保留了两个参数key,reverse 去掉了老版本中cmp参数

    cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。

    新版本:python3.6.4

        def sort(self, key=None, reverse=False): # real signature unknown; restored from __doc__
            """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """
            pass

    list.sort(key=None, reverse=False)

    参数

    • key:用列表元素的某个属性或函数作为关键字。
    • reverse:排序规则,可以选择True或者False。

    返回值

    该方法没有返回值,但是会对列表的对象进行排序。

     1 list=[4,5,1,98,12,3]
     2 list.sort()
     3 print(list)
     4 
     5 list2=[4,5,1,98,12,3]
     6 list2.sort(reverse=True)
     7 print(list2)
     8 
     9 
    10 
    11 # 获取列表的第二个元素
    12 def takeSecond(elem):
    13     return elem[1]
    14 # 列表
    15 random = [(2, 2), (3, 4), (4, 1), (1, 3)]
    16 # 指定第二个元素排序
    17 random.sort(key=takeSecond)
    18 # 输出类别
    19 print('排序列表:', random)
    20 
    21 random.sort(key=takeSecond,reverse=True)
    22 # 输出类别
    23 print('排序列表:', random)
    24 
    25 random.sort()
    26 # 输出类别
    27 print('排序列表:', random)
    28 
    29 random.sort(reverse=True)
    30 # 输出类别
    31 print('排序列表:', random)

    结果:

    "D:Program Files (x86)python36python.exe" F:/python从入门到放弃/6.5/list复习.py
    [1, 3, 4, 5, 12, 98]
    [98, 12, 5, 4, 3, 1]
    排序列表: [(4, 1), (2, 2), (1, 3), (3, 4)]
    排序列表: [(3, 4), (1, 3), (2, 2), (4, 1)]
    排序列表: [(1, 3), (2, 2), (3, 4), (4, 1)]
    排序列表: [(4, 1), (3, 4), (2, 2), (1, 3)]
    
    Process finished with exit code 0

    sorted是python的内建函数:sorted(iterable, cmp=None, key=None, reverse=False)

    而对于同样一个无序的列表list,调用sorted(list),对list进行排序后返回一个新的列表list_new,而对list不产生影响。

    def sorted(*args, **kwargs): # real signature unknown
        """
        Return a new list containing all items from the iterable in ascending order.
        
        A custom key function can be supplied to customize the sort order, and the
        reverse flag can be set to request the result in descending order.
        """
        pass

    举例:

     1 # -*- coding: utf-8 -*-
     2 list=[4,5,1,98,-12,3]
     3 
     4 new_list=sorted(list)
     5 print(new_list)
     6 new_list=sorted(list,reverse=True)
     7 print(new_list)
     8 
     9 #key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。
    10 new_list2=sorted(list,key=abs)
    11 print(new_list2)
    12 
    13 #下一列表是学生姓名和成绩
    14 list3 = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
    15 #按名字排序:
    16 def by_nam(name):
    17     return name[0]
    18 new_list3=sorted(list3,key=by_nam)
    19 print(new_list3)
    20 new_list3=sorted(list3,key=by_nam,reverse=True)
    21 print(new_list3)
    22 
    23 #按成绩排序:
    24 def by_core(name):
    25     return name[1]
    26 new_list4=sorted(list3,key=by_core)
    27 print(new_list4)
    28 new_list4=sorted(list3,key=by_core,reverse=True)
    29 print(new_list4)

    结果:

    "D:Program Files (x86)python36python.exe" F:/python从入门到放弃/6.5/list复习.py
    [-12, 1, 3, 4, 5, 98]
    [98, 5, 4, 3, 1, -12]
    [1, 3, 4, 5, -12, 98]
    [('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
    [('Lisa', 88), ('Bob', 75), ('Bart', 66), ('Adam', 92)]
    [('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]
    [('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]
    
    Process finished with exit code 0
  • 相关阅读:
    dpdk 连接错误
    strace 跟踪文件
    鲲鹏服务器 centos 升级gcc + 安装qemu
    centos 升级gcc
    undefined reference to `shm_open'
    Golang与C互用
    [ TIME ] Timed out waiting for device dev-ttyS0.device. [DEPEND] Dependency failed for Serial Getty on ttyS0.
    大型 Web 应用插件化架构探索
    网易游戏基于 Flink 的流式 ETL 建设
    基于WASM的无侵入式全链路A/B Test实践
  • 原文地址:https://www.cnblogs.com/Mengchangxin/p/9138911.html
Copyright © 2020-2023  润新知