• sorted()与sort()函数


    一 sorted()函数

    有三个参数:

    第一个是iterable,必选,待排序的集合,可以是list,tuple,set,dict等

    第二个是reverse,可选,默认为False按升序排列,True按降序排列

    第三个是key,可选,这是一个函数,返回一个key,可以看做是排序的标准,注意这里的key输入的是待排序集合的每一个元素,返回的是按照映射函数排序后的结果,这里的函数可以有多个,即先按fun1排序后,在按fun2排序,并且这里的排序函数可以直接是一个list,则按list从头到尾进行排序,

    sorted函数不修改原始列表,而是返回新的列表,而sort()直接修改原数据

    # 对list排序
    fruits = ['apple', 'pear', 'peach', 'banana']
    print(sorted(fruits, key=lambda x: len(x)))
    # ['pear', 'apple', 'peach', 'banana']
    
    # 对list内的tuple排序(对list内的dict排序同理)
    student_tuple = [('Bob','boy',17), ('Jack','girl',19), ('Tom','boy',12)]
    print(sorted(student_tuple, key=lambda student: student[2]))
    # [('Tom', 'boy', 12), ('Bob', 'boy', 17), ('Jack', 'girl', 19)]
    
    # 对字典的值排序
    student_dict = {'Bob':{'sex':'boy', 'age':17},
                    'Jack':{'sex':'girl','age':19},
                    'Tom':{'sex':'boy','age':12}}
    # 直接排序只能对字典的key进行排序
    print(sorted(student_dict))
    # ['Bob', 'Jack', 'Tom']
    
    # 将字典中的每个key-values对转化成一个tuple,便于排序,因为字典是无序的,无法直接对字典排序
    student_dict_items = student_dict.items()
    print(sorted(student_dict_items, key=lambda x: x[1]['age']))
    # [('Tom', {'sex': 'boy', 'age': 12}), ('Bob', {'sex': 'boy', 'age': 17}), ('Jack', {'sex': 'girl', 'age': 19})]
    View Code

    1 sorted可以对series,ndarry,list类型进行排序

    默认会从小到大进行排序

    arr1 = np.array([1,2,3,4,44,3243,43,8678])
    print(sorted(arr1))
    print(type(sorted(arr1)))

    对ndarry排序时,返回的是一个list。输出:

    [1, 2, 3, 4, 43, 44, 3243, 8678]
    <class 'list'>

     2 sort()可以对list中元素进行排序

    注意list中含有nan时,不是真正的排序,sorted和sort效果基本一致,只不过后者可直接在原数据上修改.

    a = [3,4,2,2,4,np.nan,5,3,5,6]
    print(a)
    print(sorted(a))
    a.sort(reverse= False)
    print(a)
    #[3, 4, 2, 2, 4, nan, 5, 3, 5, 6]
    #[2, 2, 3, 3, 4, 4, nan, 5, 5, 6]
    #[2, 2, 3, 3, 4, 4, nan, 5, 5, 6]

    参考:https://www.runoob.com/python/att-list-sort.html

  • 相关阅读:
    Android 5.0以下系统支持TLS 1.1/1.2协议版本
    Java & Android未捕获异常处理机制
    Oppo Reno2 不允许安装非正式签名应用
    Android ADB 实用总结
    Android Studio中的非项目文件及项目目录下的全局搜索
    Android开发中网络代理设置实用总结
    基于时间偏差思路下的时间周期度量
    nodejs anywhere 搭建本地静态文件服务
    Android 支持库迁移到AndroidX
    项目Gradle版本从4.4升级到4.6
  • 原文地址:https://www.cnblogs.com/xxswkl/p/10861565.html
Copyright © 2020-2023  润新知