zoukankan      html  css  js  c++  java
  • sort方法和sorted内置函数

    sort方法

    • 就地排序(直接将原列表排序),不会复制原列表,原列表会变化

    • 返回值是None,但是None会被控制台忽略,不会显示

    • 只适用于list列表对象

      sort()方法语法:

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

    sorted内置函数

    • 新建一个列表作为返回,原对象不变

    • 不管sorted接受的是怎样的参数,最后都返回一个列表

    • 可以对所有可迭代的对象进行排序操作,甚至包括不可变序列或生成器

      sorted 语法:

    sorted(iterable, key=None, reverse=False)  
    iterable:可迭代对象
    

    两者的key和reverse参数,含义和取值均相同。

    key:
    主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序,可借助 lambda 表达式。字符串排序时,可以用key=str.lower来实现忽略大小写的排序,或者用key=len进行基于字符串长度的排序。这个参数的默认值是恒等函数(identity function),也就是默认用元素自己的值来排序。
    reverse:
    排序规则,reverse = True 降序 , reverse = False 升序(默认)。
    

    示例1:按元组的第二个元素排序

    random = [(2, 2), (3, 4), (4, 1), (1, 3)]
    random.sort(key=lambda x: x[1])  # 以元组的第二个元素X[1]来排序,默认升序
    print ('排序列表:', random)
    
    输出:
    排序列表: [(4, 1), (2, 2), (1, 3), (3, 4)]
    

    示例2:按顺序、倒序输出

    example_list = [5, 0, 6, 1, 2, 7, 3, 4]
    result_list1 = sorted(example_list, key=lambda x: x)
    result_list2 = sorted(example_list, key=lambda x: -x) # 利用key进行倒序排序
    print('顺序输出:',result_list1)
    print('倒序输出:',result_list2)
    
    输出:
    顺序输出: [0, 1, 2, 3, 4, 5, 6, 7]
    倒序输出: [7, 6, 5, 4, 3, 2, 1, 0]
    

    示例3:按字符串长度排序

    fruits = ['grape', 'raspberry', 'apple', 'banana']
    print ('排序列表:', sorted(fruits, key=len, reverse=True))  # 按元素长度,倒序排序
    print ('原列表:', fruits)
    
    输出:
    排序列表: ['raspberry', 'banana', 'grape', 'apple']
    原列表: ['grape', 'raspberry', 'apple', 'banana']
    

    示例4:字符串忽略大小写的排序

    fruits = ['Grape', 'raspberry', 'apple', 'Banana']
    print ('排序列表1:', sorted(fruits)) # 不忽略大小写
    print ('排序列表2:', sorted(fruits,key=str.lower)) # 忽略大小写
    
    输出:
    排序列表1: ['Banana', 'Grape', 'apple', 'raspberry']
    排序列表2: ['apple', 'Banana', 'Grape', 'raspberry']
    

    示例5:集合排序返回列表

    basket = {'apple', 'cherry', 'grape', 'pear', 'orange', 'Banana'}
    array = sorted(basket,key=len,reverse=True) # 先按字符长度降序排序
    print('排序结果列表:',array)
    
    输出:
    排序结果列表: ['orange', 'cherry', 'Banana', 'grape', 'apple', 'pear']
    
  • 相关阅读:
    vs快速添加引用解析的快捷键
    Linux内核调试技术——kprobe使用与实现
    Linux内核调试技术——kretprobe使用与实现
    Linux内核调试技术——jprobe使用与实现
    【HTTP协议】---HTTP协议详解
    雪崩效应
    Shell中IFS用法
    shell中for循环,读取一整行
    BCD码
    pam模块日志怎么输出
  • 原文地址:https://www.cnblogs.com/gisen_6/p/15790639.html
Copyright © 2011-2022 走看看