Python中sorted()函数之排序的利器详解

 更新时间:2024年08月05日 09:54:33   作者:程序员喵哥  
sorted()函数是Python中的内置函数,用于对可迭代对象进行排序,下面这篇文章主要给大家介绍了关于Python中sorted()函数之排序的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在 Python 中,sorted() 函数是用于对可迭代对象进行排序的内置函数。本文将深入探讨 sorted() 函数的用法、工作原理以及常见应用场景,可以更好地理解和应用这个函数。

什么是 sorted() 函数?

sorted() 函数是 Python 中的一个内置函数,用于对可迭代对象进行排序。该函数返回一个新的列表,其中包含了按照指定排序规则排序后的原始数据。

sorted() 函数的基本语法如下:

sorted(iterable, *, key=None, reverse=False)
  • iterable 是要排序的可迭代对象,例如列表、元组、集合等。

  • key 是一个可选参数,用于指定排序时要应用的函数。

  • reverse 是一个可选参数,用于指定排序顺序,True 表示降序,False 表示升序(默认为 False)。

sorted() 函数的基本用法

先来看一些 sorted() 函数的基本用法。

1. 对列表进行排序

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在这个示例中,对列表 numbers 进行排序,并将排序后的结果存储在新列表 sorted_numbers 中。

2. 对字符串进行排序

text = "python"
sorted_text = sorted(text)
print(sorted_text)  # ['h', 'n', 'o', 'p', 't', 'y']

在这个示例中,对字符串 text 进行排序,按照字母顺序将字符分割成单个字符,并将排序后的结果存储在新列表 sorted_text 中。

3. 对集合进行排序

fruits = {"apple", "banana", "orange", "pineapple", "grape"}
sorted_fruits = sorted(fruits)
print(sorted_fruits)  # ['apple', 'banana', 'grape', 'orange', 'pineapple']

在这个示例中,对集合 fruits 进行排序,按照字母顺序将集合元素排序,并将排序后的结果存储在新列表 sorted_fruits 中。

sorted() 函数的常见应用场景

sorted() 函数在 Python 编程中有许多应用场景,以下是一些常见的用法:

1. 自定义排序规则

sorted() 函数通过指定 key 参数来定义自定义排序规则。

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers, key=lambda x: x % 3)
print(sorted_numbers)  # [3, 6, 9, 3, 1, 4, 1, 5, 2, 5, 5]

在这个示例中,定义了一个匿名函数作为 key 参数,按照元素对 3 取余的结果进行排序,从而实现了自定义的排序规则。

2. 排序字典

sorted() 函数也可以用于对字典的键或值进行排序。

my_dict = {'a': 3, 'b': 1, 'c': 4, 'd': 2}
sorted_keys = sorted(my_dict.keys())
print(sorted_keys)  # ['a', 'b', 'c', 'd']

sorted_values = sorted(my_dict.values())
print(sorted_values)  # [1, 2, 3, 4]

在这个示例中,分别对字典的键和值进行排序,并将排序后的结果存储在新列表中。

3. 复杂对象的排序

sorted() 函数也可以用于对复杂对象的列表进行排序,例如元组、对象列表等。

# 对元组列表按照第二个元素进行排序
data = [(1, 3), (2, 1), (3, 4), (4, 2)]
sorted_data = sorted(data, key=lambda x: x[1])
print(sorted_data)  # [(2, 1), (1, 3), (4, 2), (3, 4)]

在这个示例中,定义了一个匿名函数作为 key 参数,按照元组的第二个元素进行排序,从而实现了对元组列表的排序。

4. 指定排序顺序

除了使用 key 参数外,sorted() 函数还提供了 reverse 参数,用于指定排序顺序,即升序或降序。

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers_asc = sorted(numbers)
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_asc)  # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
print(sorted_numbers_desc)  # [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

在这个示例中,分别使用 sorted() 函数的默认排序顺序和指定 reverse=True 参数的排序顺序,得到了升序和降序排列的结果。

5. 排序稳定性

Python 的排序算法保证了排序的稳定性,即具有相同键值的元素在排序后的相对位置保持不变。

data = [('a', 3), ('b', 1), ('c', 3), ('d', 2)]
sorted_data = sorted(data, key=lambda x: x[1])
print(sorted_data)  # [('b', 1), ('d', 2), ('a', 3), ('c', 3)]

在这个示例中,元组 ('a', 3) 和 ('c', 3) 在排序后的结果中保持了原有的顺序,这就是排序的稳定性。

6. 原地排序

除了返回一个新的列表外,sorted() 函数还可以直接对原始数据进行排序,使用 key 和 reverse 参数来指定排序规则。

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
numbers.sort(reverse=True)
print(numbers)  # [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

在这个示例中,使用列表的 sort() 方法对原始数据进行排序,指定了 reverse=True 参数,实现了降序排序。

总结

sorted() 函数是 Python 中一个非常有用的内置函数,用于对可迭代对象进行排序。通过合理地应用 sorted() 函数,可以实现对各种数据类型的排序操作,包括列表、字符串、集合等。了解 sorted() 函数的使用方法和参数选项,可以更灵活地处理数据,提高代码的效率和可维护性。希望本文提供的示例和解释能够帮助大家更好地理解和应用 sorted() 函数,在实际开发中发挥更大的作用。

到此这篇关于Python中sorted()函数之排序利器的文章就介绍到这了,更多相关Python中sorted()函数排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pandas 缺失值与空值处理的实现方法

    pandas 缺失值与空值处理的实现方法

    这篇文章主要介绍了pandas 缺失值与空值处理的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 用python批量解压带密码的压缩包

    用python批量解压带密码的压缩包

    批量解压缩带密码的压缩包的Python脚本,直接拖入文件夹或压缩文件即可,支持解压几乎所有压缩文件格式。可携带 Portable
    2021-05-05
  • Python实现堆排序案例详解

    Python实现堆排序案例详解

    这篇文章主要介绍了Python实现堆排序案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Django Web开发中django-debug-toolbar的配置以及使用

    Django Web开发中django-debug-toolbar的配置以及使用

    正在发愁怎么调试Django,就遇到了Django Debug Toolbar这个利器。下面这篇文章主要给大家介绍了关于django web开发中django-debug-toolbar的配置以及使用的相关资料,文中通过图文及示例代码介绍的非常详细,需要的朋友可以参考下
    2018-05-05
  • python图像填充与裁剪/resize的实现代码

    python图像填充与裁剪/resize的实现代码

    这篇文章主要介绍了python图像填充与裁剪/resize,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • pandas中Series运算汇总(算术、比较和逻辑运算)

    pandas中Series运算汇总(算术、比较和逻辑运算)

    本文主要介绍了pandas中Series运算汇总,包括算术运算、比较运算和逻辑运算等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • python实现请求数据包签名

    python实现请求数据包签名

    这篇文章主要介绍了python实现请求数据包签名,主要以python怎么快速对请求体做一次签名为主题,塑造实现请求数据包签名过程,具有一定得参考价值,需要的小伙伴可以参考一下
    2022-02-02
  • Python sklearn库中的随机森林模型详解

    Python sklearn库中的随机森林模型详解

    本文主要说明 Python 的 sklearn 库中的随机森林模型的常用接口、属性以及参数调优说明,需要读者或多或少了解过sklearn库和一些基本的机器学习知识
    2023-08-08
  • Python爬虫信息输入及页面的切换方法

    Python爬虫信息输入及页面的切换方法

    今天小编就为大家分享一篇Python爬虫信息输入及页面的切换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

    Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

    这篇文章主要介绍了Python 字节流,字符串,十六进制相互转换实例(binascii,bytes),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05

最新评论