数据分析【Python基础】——列表和数组排序函数详解

阅读之前看这里????:博主是正在进行数据分析师求职的一员,博客记录的是在学习和求职过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。博客地址:天阑之蓝的博客,学习过程中不免有困难和迷茫,希望大家都能在这学习的过程中肯定自己,超越自己,最终创造自己。目录列表排序list.sort() 和sorted()list.sort()和 sorted()的关键函数Operator 模块函数矩阵/数组排序二维数组排序按照指定列排序numpy数组排序numpy.a
摘要由CSDN通过智能技术生成

阅读之前看这里👉:博主是正在进行数据分析师求职的一员,博客记录的是在学习和求职过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。
博客地址:天阑之蓝的博客,学习过程中不免有困难和迷茫,希望大家都能在这学习的过程中肯定自己,超越自己,最终创造自己。

列表排序

list.sort() 和sorted()

在Python列表里有一个内置的list.sort()方法可以直接修改列表。还有一个sorted()内置函数,它会从一个可迭代对象构建一个新的排序列表

区别如下:

array1 = [5, 2, 3, 1, 4]
a = sorted([5, 2, 3, 1, 4])

在这里插入图片描述
我们可以看到结果中array1并没有变化,返回的是一个新的已排序列表a。

array1 = [5, 2, 3, 1, 4]
array1.sort()

在这里插入图片描述
返回的结果是array1已经变成了一个排序好的列表,说明列表本身发生了改变。

sort()和sorted()的区别:

  • list.sort() 方法,它会直接修改原列表(并返回 None 以避免混淆),通常来说它不如 sorted() 方便 ——— 但如果你不需要原列表,它会更有效率。
  • list.sort() 方法只是为列表定义的,而 sorted() 函数可以接受任何可迭代对象。

list.sort()和 sorted()的关键函数

list.sort()sorted() 都有一个 key 形参来指定在进行比较之前要在每个列表元素上进行调用的函数。

sort(*, key=None, reverse=False)

sorted(iterable, *, key=None, reverse=False)

此方法会对列表进行原地排序,只使用 < 来进行各项间比较。 异常不会被屏蔽 —— 如果有任何比较操作失败,整个排序操作将失败(而列表可能会处于被部分修改的状态)。

sort() 接受两个仅限以关键字形式传入的参数 (仅限关键字参数):

key 指定带有一个参数的函数,用于从每个列表元素中提取比较键 (例如 key=str.lower)。 对应于列表中每一项的键会被计算一次,然后在整个排序过程中使用。 默认值 None 表示直接对列表项排序而不计算一个单独的键值。

reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序

例如,下面是一个不区分大小写的字符串比较:

sorted("This is a test string from Andrew".split(), key=str.lower)

结果:['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

key 形参的值应该是一个函数,它接受一个参数并并返回一个用于排序的键。这种技巧速度很快,因为对于每个输入记录只会调用一次 key 函数。

一种常见的模式是使用对象的一些索引作为键对复杂对象进行排序。例如:

class Student:
    def __init__(self, name, grade, age):
        self.name = name
        self.grade = grade
        self.age = age
    def __repr__(self):
        return repr((self.name, self.grade, self.age))

student_objects = [
    Student('john', 'A', 15),
    Student('jane', 'B', 12),
    Student('dave', 'B', 10),
]

sorted(student_objects, key=lambda student: student
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值