美文网首页生活不易 我用python
说说 Python 中 list.sort()方法与函数sort

说说 Python 中 list.sort()方法与函数sort

作者: deniro | 来源:发表于2020-10-02 09:57 被阅读0次

    (1) list.sort() 方法

    list.sort() 方法就地排序,也就是说会直接作用于当前列表,直接把当前列表变为已排序的列表。它会返回 None。在 Python 中 ,如果一个函数或者方法对对象进行的是就地改动操作,一般来说,它们会返回 None。这样做的目的是让 API 的使用者知道这个函数或者方法是就地改动操作。比如 random.shuffle 函数也有这个特性。

    shuffle() 方法会将序列的所有元素进行随机排序。

    有利就有弊,因为这些函数或者方法只能返回 None,所以无法像流式编程那样将其一个个串联起来。

    (2) 内置函数 sorted()

    内置函数 sorted,接受任何形式的可迭代对象作为入参,内部会新建一个列表作为返回值。

    (3)关键字参数

    list.sort() 方法与 内置函数 sorted() 都有以下两个可选的关键字参数。

    关键字参数 默认值 说明
    reverse False 是否逆序
    key 值排序 排序算法;str.lower:忽略大小写的排序;len:基于字符串长度的排序

    (4)示例

    Luciano Ramalho 举了这样一个示例来说明list.sort()方法与函数sorted() 之间的区别。

    fruits=['grape','raspberry','apple','banana']
    result=sorted(fruits)
    logging.info('sorted(fruits) -> %s',result)
    logging.info('fruits -> %s',fruits)
    
    result=sorted(fruits,reverse=True)
    logging.info('sorted(fruits,reverse=True) -> %s',result)
    
    result=sorted(fruits,key=len)
    logging.info('sorted(fruits,key=len) -> %s',result)
    
    result=sorted(fruits,reverse=True,key=len)
    logging.info('sorted(fruits,reverse=True,key=len) -> %s',result)
    
    result=fruits.sort()
    logging.info('sort() -> %s',result)
    logging.info('fruits.sort() from fruits-> %s',fruits)
    

    运行结果:

    INFO - sorted(fruits) -> ['apple', 'banana', 'grape', 'raspberry']
    INFO - fruits -> ['grape', 'raspberry', 'apple', 'banana']
    INFO - sorted(fruits,reverse=True) -> ['raspberry', 'grape', 'banana', 'apple']
    INFO - sorted(fruits,key=len) -> ['grape', 'apple', 'banana', 'raspberry']
    INFO - sorted(fruits,reverse=True,key=len) -> ['raspberry', 'banana', 'grape', 'apple']
    INFO - sort() -> None
    INFO - fruits.sort() from fruits-> ['apple', 'banana', 'grape', 'raspberry']
    
    

    可以看到 list.sort() 方法是就地排序,而函数sorted() 不影响原对象,它会返回一个已排好序的新对象。

    相关文章

      网友评论

        本文标题:说说 Python 中 list.sort()方法与函数sort

        本文链接:https://www.haomeiwen.com/subject/esjcuktx.html