Python 中的排序工具:sort 与 sorted 详解

您所在的位置:网站首页 python排序模块 Python 中的排序工具:sort 与 sorted 详解

Python 中的排序工具:sort 与 sorted 详解

2024-06-18 09:57| 来源: 网络整理| 查看: 265

Python 中的排序工具:sort 与 sorted 详解

转载请注明出处:https://blog.csdn.net/jpch89/article/details/84324272

文章目录 Python 中的排序工具:sort 与 sorted 详解 0. 参考资料 1. 排序基础 2. key 参数 3. operator 模块中的函数 4. 升序与降序 5. 排序稳定性和复杂排序 6. 使用老式的 DSU 方法排序 7. 使用老式的 cmp 参数排序 8. 杂项

0. 参考资料 Sorting HOW TO 1. 排序基础

Python 中提供了两种排序工具:

list.sort() 方法,它会修改原列表。 sorted() 内置函数,从可迭代对象生成一个新的排序后的列表。

最基本的升序排序很简单:

调用 sorted() 函数,返回一个排序过的列表,不修改原列表。 >>> old_list = [1, 4, 5, 3, 2, 8, 7] >>> new_list = sorted(old_list) >>> new_list [1, 2, 3, 4, 5, 7, 8] >>> old_list # 不改变原列表 [1, 4, 5, 3, 2, 8, 7] 也可以用 list.sort() 方法,它会修改原列表,返回 None。通常它没有 sorted() 方便,但是如果不需要原列表的话,它更高效些。 >>> old_list [1, 4, 5, 3, 2, 8, 7] >>> old_list.sort() >>> old_list [1, 2, 3, 4, 5, 7, 8]

注意: 由于 list.sort() 方法返回的是 None,所以如果错误地写出 old_list = old_list.sort() 这样的代码,就会丢失 old_list 的所有数据。

还有一个区别是,list.sort() 方法只有列表可以使用,而 sorted() 函数可以作用于任何可迭代对象。 >>> sorted({ 1: 'D', 4: 'B', 2: 'C', 3: 'E', 5: 'A'}) [1, 2, 3, 4, 5] 2. key 参数

list.sort() 和 sorted() 都有一个 key 参数,它接收一个函数 function,比较之前会对每个元素调用一次。 比如下面是忽略大小写的字符串比较。

使用 sorted() 函数: >>> sorted("This is a test string from Andrew".split(), key=str.lower) ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This'] 使用 list.str() 方法: >>> strings = "This is a test string from Andrew".split() >>> strings.sort(key=str.lower) >>> print(strings) ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

key 参数的值应该是一个函数,这个函数接收一个参数,返回一个用于排序的键。 key 函数对每一个元素调用一次。

def key_func(x): print('我被调用了') return x.lower() strings = "This is a test string from Andrew".split() strings.sort(key=key_func) print(strings) """ 我被调用了 我被调用了 我被调用了 我被调用了 我被调用了 我被调用了 我被调用了 ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This'] """

比较常见的一个应用场景是取对象的某个索引作为键。

student_tuples


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3