zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    vue组件间传值
    Kth MIN-MAX 反演
    BZOJ4671 异或图(容斥+线性基)
    hihoCoder #1646 : Rikka with String II(容斥原理)
    字符串小结
    LOJ# 572. 「LibreOJ Round #11」Misaka Network 与求和(min25筛,杜教筛,莫比乌斯反演)
    SPOJ divcntk(min25筛)
    LA3490 Generator(KMP + 高斯消元)
    ExKMP(Z Algorithm) 讲解
    BZOJ 2728: [HNOI2012]与非(位运算)
  • 原文地址:https://www.cnblogs.com/xxswkl/p/10861565.html
Copyright © 2011-2022 走看看