深入理解python中sort()与sorted()的区别

深入理解python中sort()与sorted()的区别

在Python中,我们有两个方法可以对列表进行排序,分别是sort()和sorted()。虽然它们的作用是一样的,但它们之间还是有区别的,下面将进行详细讲解。

sort()

sort()方法是一个列表对象的方法,调用它可以对列表进行原地排序(即不产生新的对象)。sort()方法有两个可选的参数,reverse和key,其中reverse用于控制排序顺序,可以取True或False,默认为False,表示升序排列;key是一个可调用对象,其返回值将用作排序的关键字。

sort()方法应用于列表对象,是一个原地排序的方法,也就是说,它修改了原来的列表,而不是返回一个新的列表。其用法如下:

a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
a.sort()
print(a)

上述代码会输出[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]。

sorted()

sorted()是Python的内建函数,它可以对任意迭代对象进行排序,并返回一个新的排序后的对象。sorted()函数有三个可选的参数,reverse、key以及cmp,其中reverse和key的作用与sort()方法相同,而cmp是来自Python 2.x的遗留参数,在Python 3.x中已不再使用。

sorted()函数返回一个新的列表,不影响原来的列表。其用法如下:

a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
b = sorted(a)
print(a)
print(b)

输出结果分别为[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]和[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9],b是一个新的已排序的列表,而原列表a并没有被改变。

两者对比

sort()方法用于对列表进行原地排序,是一个列表对象的方法;而sorted()函数用于对任意迭代对象进行排序,并返回一个新的已排序对象,是Python的内建函数。

sort()方法改变原有的列表,而sorted()函数并不改变原有的对象,而是返回一个新的排序后的对象。

sort()方法有两个可选参数reverse和key,而sorted()函数也有这两个参数,同时还有一个可以替代cmp的参数。

由于sort()方法是原地排序,所以在处理比较大的数据集时会更快;而sorted()函数由于返回一个新的对象,所以在处理比较大的数据集时会更占用内存。

示例

下面提供两个有关sort()方法与sorted()函数的示例。

示例1

# sort()方法示例
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
a.sort()  # 原地排序
print(a)  # 输出[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

上述代码中,使用sort()方法对列表进行排序,得到了一个已排序的列表。

示例2

# sorted()函数示例
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
b = sorted(a)  # 返回一个新的已排序对象
print(a)  # 输出[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
print(b)  # 输出[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

上述代码中,使用sorted()函数对列表进行排序,得到了一个新的已排序对象,并没有改变原列表。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入理解python中sort()与sorted()的区别 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python实现Linux监控的方法

    要在Linux系统上监控各种系统指标,可以使用Python编写脚本来实现。下面是一个简单的Python脚本,可以监控CPU、内存和磁盘使用情况。 1. 安装依赖 在开始编写Python脚本之前,需要安装一些必要的依赖。可以使用以下命令在Linux系统上安装Python的psutil和matplotlib库: pip psutil matplotlib 2. …

    python 2023年5月14日
    00
  • python多进程使用函数封装实例

    下面是一份Python多进程使用函数封装的实例攻略: 什么是Python多进程 在介绍如何使用Python多进程实现函数封装前,我们先来了解一下Python多进程的基本概念。 Python多进程是指在一个Python程序中同时运行多个进程的能力。该进程可以执行各自独立的任务,并在需要时相互通信。 Python多进程的优点在于可以利用多核处理器的性能,提高程序…

    python 2023年5月19日
    00
  • Python环境下搭建属于自己的pip源的教程

    下面我将详细讲解在Python环境下搭建属于自己的pip源的步骤和示例。 1. 前置条件 在搭建自己的pip源之前,需要安装和配置好以下组件: Python环境 (Python3.x版本推荐) pip工具 setuptools包 2. 搭建自己的pip源 步骤一:安装pypiserver 首先需要安装pypiserver包,用于搭建自己的pip源。 可以通过…

    python 2023年5月14日
    00
  • 如何使用Python在MySQL中使用外键?

    在MySQL中,可以使用外键来建立表之间的关系。在Python中,可以使用MySQL连接来执行外键查询。以下是在Python中使用外键的完整攻略,包括外键的基本语法、使用外键的示例及如何在Python中使用外键。 外键的基本语法 在MySQL中,可以使用FOREIGN KEY关键字来创建外键以下是创建外键的基本语法: CREATE TABLE table_n…

    python 2023年5月12日
    00
  • 拓扑排序Python实现的过程

    拓扑排序Python实现的过程 拓扑排序是一种常用的有向无环图(DAG)的排序算法,它可以将DAG中的节点按照一定的顺序进行排序。实际应用中,拓扑排序常于任务调度、依赖关系分析等场景。本文将介绍拓扑排序的Python实现过程,并提供两个示例说明。 拓扑排序的实现过程 拓扑排序的实现过程可以分为以下几个步骤: 构建DAG:将有向表示为邻接表或邻接矩阵的形式。 …

    python 2023年5月14日
    00
  • python机器学习包mlxtend的安装和配置详解

    下面是对“python机器学习包mlxtend的安装和配置详解”的完整攻略。 安装mlxtend 在安装mlxtend前,你需要确认已经安装了Python3,并且使用pip安装了numpy和matplotlib,因为这两个库是mlxtend的基础。 接下来,打开终端或命令提示符,输入以下命令进行mlxtend的安装: pip install mlxtend …

    python 2023年6月3日
    00
  • python通过urllib2爬网页上种子下载示例

    下面就详细讲解一下“Python通过urllib2爬网页上种子下载示例”的完整攻略。 准备工作 在使用Python爬虫之前需要先安装urllib2模块,可以在Python交互式命令行输入以下指令安装: pip install urllib2 爬取网页 首先,需要使用Python的urllib2库读取目标网页的内容。可以使用以下代码: import urlli…

    python 2023年6月3日
    00
  • python 布尔操作实现代码

    当我们需要对多个布尔值进行逻辑运算时,可以使用 Python 中内置的布尔操作符,它们包括与 (and)、或 (or) 和非 (not)。这些操作符可以将两个布尔值组合为一个更复杂的表达式,可以帮助我们实现复杂的逻辑控制。 布尔操作符 与运算符 (and) 当两个条件都为 True 时,and 运算符才会返回 True,否则返回 False。 # 示例 1 …

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部