• Python的sort()与sorted()函数详解


    目录

    sort()函数

    sorted()函数

    key参数

    区别


    sort()函数

    list.sort(key=None, reverse=False)
    
    • key 是一个可选参数,用于指定一个函数,根据这个函数的返回值对列表中的每个元素进行排序。默认为 None,表示直接比较元素本身的大小来排序。
    • reverse 也是一个可选参数,如果设置为 True,则列表会以降序进行排序;如果设置为 False(默认值),则列表会以升序进行排序。

    该方法用于原地对列表进行排序,即直接在原始列表上进行排序操作,并不返回一个新的列表。

    1. my_list = [3, 1, 4, 2, 5]
    2. my_list.sort()
    3. print(my_list) # 输出: [1, 2, 3, 4, 5]

    sorted()函数

    sorted()函数:该函数对可迭代对象进行排序,并返回一个新的已排序的列表。原始列表不会被修改。

    1. my_list = [3, 1, 4, 2, 5]
    2. new_list = sorted(my_list)
    3. print(new_list) # 输出: [1, 2, 3, 4, 5]

    字符串进行排序时,返回列表:

    1. s="oplk"
    2. p=sorted(s)
    3. print(p)
    4. #输出:['k', 'l', 'o', 'p']

    key参数

    sorted()函数中,key参数用于指定一个函数来用作排序的关键字。这个函数将被应用于可迭代对象中的每个元素,并根据函数返回值进行排序。

    key参数接受一个函数作为参数,该函数接受一个元素作为输入,并返回一个值。sorted()函数将使用这个返回值来确定元素的排序顺序。

    • 按照元素的绝对值进行排序:
    1. my_list = [5, -3, 2, -1, 4]
    2. new_list = sorted(my_list, key=abs)
    3. print(new_list) # 输出: [-1, 2, -3, 4, 5]
    • 按照元素的长度进行排序: 
    1. my_list = ['apple', 'banana', 'cherry', 'date']
    2. new_list = sorted(my_list, key=len)
    3. print(new_list) # 输出: ['date', 'apple', 'cherry', 'banana']

    其实 key = len 实质是函数。 

    • 自定义函数进行排序: 
    1. def sort_by_last_character(string):
    2. return string[-1]
    3. my_list = ['apple', 'banana', 'cherry', 'date']
    4. new_list = sorted(my_list, key=sort_by_last_character)
    5. print(new_list) # 输出:['banana', 'apple', 'date', 'cherry']

    这里我们定义了一个名为sort_by_last_character的函数,它返回字符串的最后一个字符。然后,我们将这个函数传递给key参数来进行排序。


    区别

    1. sort()方法是对可变的列表对象进行操作,而sorted()函数可以用于任何可迭代的对象。
    2. sort()方法在原地进行排序,会修改原列表;sorted()函数返回一个新的已排序的列表,不改变原列表。
    3. 如果需要保留原列表的顺序,可以使用sorted()函数并将结果赋值给一个新的变量;如果不需要保留原列表或需要在原列表上进行操作,可以使用sort()方法。
    4. sort()方法没有返回值,而sorted()函数会返回一个新的已排序的列表,可以将其赋值给一个变量以进行后续操作。
    5. sort()方法和sorted()函数都支持传递一些可选参数,例如key用于指定一个函数来用作排序的关键字,reverse用于指定排序顺序是否为降序等。
  • 相关阅读:
    移动端 rem 适配方案
    less-loader的less转成CSS的底层原理
    第二章 数据结构(2)
    Kotlin语法入门-密封类和密封接口(11)
    Fiori 应用通过 Adaptation Project 的增强方式分享
    一文学会Canal怎么用
    字节二面:可重复读隔离级别下,这个场景会发生什么?
    Selenium Python教程第5章
    简易版剪辑视频程序(python-VideoFileClip)
    内置第三方apk总结
  • 原文地址:https://blog.csdn.net/weixin_73699630/article/details/132783812