深入理解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支持异步的列表解析式

    Python支持异步的列表解析式,又被称为异步列表推导式,它是一种基于 asyncio 库的高效异步编程方法。使用异步列表解析式,可以在单个代码块内同时生成多个异步任务,并异步地执行它们。下面是使用异步列表解析式的基本步骤: 步骤1:导入 asyncio 库 异步列表解析式需要使用 asyncio 库,因此要在代码文件最开始处导入该库: import asy…

    python 2023年5月14日
    00
  • Python爬取知乎图片代码实现解析

    Python爬取知乎图片是一个常见的网络爬虫应用场景。在本文中,我们将深入讲解如何使用Python爬取知乎图片,并提供两个示例,以便更好地理解这个过程。 Python爬取知乎图片的方法 Python爬取知乎图片的方法如下: 使用requests模块发送HTTP请求,获取知乎页面的HTML源代码。 使用BeautifulSoup模块解析HTML源代码,获取知乎…

    python 2023年5月15日
    00
  • Python 中pandas.read_excel详细介绍

    以下是“Python中pandas.read_excel详细介绍”的完整实例教程。 一、read_excel函数简介 首先,需要明确的是,pandas库是Python数据分析的中心库之一,提供了许多用于数据处理的函数,包括read_excel函数,它允许用户读取Excel文件并将其转换为DataFrame对象。read_excel()是pandas的一个函数…

    python 2023年5月13日
    00
  • Python教程之成员和身份运算符的用法详解

    Python教程之成员和身份运算符的用法详解 什么是成员运算符? 在Python中,成员运算符用于测试一个值是否在一个序列中,包括字符串、列表、元组等。 in运算符 in运算符用法示例: # 判断字母是否在字符串中 string = "hello world" if "h" in string: print(&quot…

    python 2023年5月14日
    00
  • python自动下载图片的方法示例

    下面是Python自动下载图片的方法示例的完整攻略。 背景说明 在网络应用或爬虫应用中,我们经常需要下载图片,手动下载耗时耗力,因此需要编写Python程序,实现自动下载图片的功能。 方法一:使用requests库下载图片 requests库是Python中常用的HTTP客户端库,它可以方便地向Web服务器发送请求并获取响应。利用requests库,我们可以…

    python 2023年5月19日
    00
  • python简单验证码识别的实现过程

    下面是实现过程的详细攻略: Python简单验证码识别的实现过程 验证码识别是一个有趣的领域,同时也是计算机视觉领域的一个重要应用。在这篇文章中,我们将使用Python编程语言来实现一个简单的验证码识别程序,以识别数字验证码。本文根据以下几个步骤进行: 步骤1 – 收集和预处理验证码图像 为了识别验证码,我们需要先收集并处理验证码图像数据。可以从互联网上找到…

    python 2023年5月18日
    00
  • 一文搞懂Python中pandas透视表pivot_table功能

    一文搞懂Python中pandas透视表pivot_table功能 在数据分析中,透视表是一种非常实用的数据统计工具。pandas库中的pivot_table函数就是用来实现透视表功能的。本文将详细讲解pivot_table的用法和示例。 什么是透视表 透视表是一种交互式的表格,可以用于快速汇总、筛选和分析大量数据。它通常用于商业和科学研究领域,以便对数据进…

    python 2023年5月13日
    00
  • Python 求数组局部最大值的实例

    下面是Python求解数组局部最大值的攻略: 概述 数组局部最大值是指在一个数组中,某一区间内的元素值均比其它相邻元素大,该元素即为局部最大值。本文将介绍如何使用Python求解数组的局部最大值。 解法一 将问题转化为区间查找问题。通过遍历数组,找到数组中所有局部最大值的区间,并保存一个局部最大值的列表。 遍历数组,找到所有可能的局部最大值的区间,保存到一个…

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