news 2026/7/5 13:57:29

Python sort函数参数藏大招!用错它,你的代码直接废了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python sort函数参数藏大招!用错它,你的代码直接废了

排序这个操作作为其中的一个基本操作, 该语言给出了两种主要的数据排序办法: sort()以及(), 虽说两者都是用以按特定顺序去排列数据, 然而它们展开工作的方式存在稍许不同, 且应用于不一样的场景, 弄明白sort()和()之间的差别能够助力编写更具高效性、可读性的代码。

了解sort()

sort()方法属于一种内置的列表方法, 去对列表的元素开展排序。这就意味着,原始列表会被修改的, 而且并不会创建.new列表。sort()方法能够按照升序或者降序来对列表排序, 还能够运用key参数依据自定义条件展开排序。

本地排序

当运用sort()之时, 原本的列表, 会被重新排列成排序的顺序。鉴于排序是在本地开展的, 所以此方法在内存方面的效率更高, 原因在于它无需去创建新的列表。然而, 这同样意味着, 您将会失去列表原本的顺序, 除非您在排序之前去创建副本。

语法:

list.sort(key=None, reverse=False)

用法

示例 1:使用 sort() 进行基本排序

numbers = [3, 1, 4, 1, 5, 9] numbers.sort() print(numbers)

输出:

[1, 1, 3, 4, 5, 9]

在这个示例当中, sort()把数字的元素依照升序来重新进行排列, 并且让原始列表发生改变。

示例 2:使用 key 和 排序

words = ["banana", "apple", "cherry"] words.sort(key=len, reverse=True) print(words)

输出:

['banana', 'cherry', 'apple']

在这个地方, sort()使用key=len这个参数, 按照长度以降序的方式, 对单词列表开展排序。

了解()

()函数, 是那具备内置性质的函数, 它能够从任意可迭代对象之中, 像列表、元组或者字符串这些的元素里面, 返回出一个全新的、经过排序的列表, 而且并不对原始的可迭代对象进行修改。跟仅仅适用于列表的sort()不一样, ()能够被用于任何可迭代对象, 并且始终都会返回包含着已排序元素的新列表。

创建新的排序列表

在运用()之际, 起初的 维持原状, 且构建出一个涵盖已排序元素的全新列表并予以返回。这般一来, 在需要于使用 版本之时留存原始数据的情况下, ()就变成了更为优渥的选择。

语法:

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

用法

示例 1:使用 () 进行基本排序

numbers = [3, 1, 4, 1, 5, 9] sorted_numbers = sorted(numbers) print(sorted_numbers) print(numbers)sED.GoUlu.INFo

输出:

[1, 1, 3, 4, 5, 9] [3, 1, 4, 1, 5, 9]

示例里, ()返回的是一个新的经过排序的列表, 但是原本的数字列表维持了不变。

示例 2:使用 key 和 排序

words = ["banana", "apple", "cherry"] sorted_words = sorted(words, key=len, reverse=True) print(sorted_words) print(words)

输出:

['banana', 'cherry', 'apple'] ['banana', 'apple', 'cherry']

在这个地方, ()会返回出一个崭新的列表, 此列表是依据单词的长度, 按照从大到小的顺序进行排列的, 而且原本的单词列表不会受到任何影响。

1. 可变性跟不变性, 2. 返回值, 3. 使用范围, 4. 性能方面所需注意的事项, sort()和()之间存在的主要区别是这些 , 在如下这种情况之下要去使用sort()。

希望就地对列表进行排序:

只使用列表:

性能很重要:

例:

data = [3, 1, 4, 1, 5, 9] data.sort() print(data) # Output: [1, 1, 3, 4, 5, 9]

在以下情况下使用():

需要保留原始数据:

正在使用 lists 以外的可迭代对象:

需要快速的一次性排序:

例:

data = [3, 1, 4, 1, 5, 9] sorted_data = sorted(data) print(sorted_data) # Output: [1, 1, 3, 4, 5, 9] print(data) # Original list remains unchanged: [3, 1, 4, 1, 5, 9]
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 13:57:19

Java程序设计(第3版)第四章——静态代码块

#静态代码块 1.static可以用于修饰初始化代码块 2.初始化代码块(动态代码块) 3.位置:定义在类以内,方法以外的{} 4.作用:创建对象时,按照和属性定义的先后顺序完成属性的初始化工作 5.静态代码块:被static修饰符的初始化代码块称为…

作者头像 李华
网站建设 2026/7/5 13:53:33

从PCF到Xenium:空间蛋白组与空间转录组如何互补解析GBM组织生态

复杂肿瘤组织往往需要多种空间组学方法共同解读。《Cell》这项胶质母细胞瘤(GBM)研究之所以具有方法学参考价值,是因为它将PCF(CODEX)空间单细胞蛋白组、Xenium空间转录组和TCR测序放在同一研究框架中:PCF观…

作者头像 李华
网站建设 2026/7/5 13:53:21

【关于接口幂等】

“接口幂等”是后端开发中非常核心的一个概念,也是面试中的高频考点。它直接关系到系统的数据一致性和稳定性。 以下是对“接口幂等”的全面解析,从概念、场景到具体的落地实现方案。一、 什么是接口幂等? 数学定义: 在数学中&…

作者头像 李华
网站建设 2026/7/5 13:53:01

操作系统核心本质与计算机体系结构精讲,CPU/内存/磁盘/总线协作机制、内核四大核心模块、程序运行底层原理

0. 前言:所有软件的终极运行底座我们掌握了服务端高性能编程、网络架构与线上调优能力,第127天我们正式开启操作系统、计算机网络、数据库、AI四大核心体系的全新进阶之路。从今天开始,我们正式深耕操作系统底层原理。很多开发者长期存在一个…

作者头像 李华
网站建设 2026/7/5 13:50:56

屏幕录制软件功能一览,客观罗列各项基础信息

办公教学、素材记录时经常需要捕捉电脑屏幕画面,下面整理五款电脑端录屏相关程序,分别记录每款工具具备功能、存在不足、适配场景,无宣传话术,不区分优劣,文末不给出选择建议。录屏大师有什么功能:提供全屏…

作者头像 李华
网站建设 2026/7/5 13:50:17

TensorRT-LLM 高性能部署——NVIDIA 生态下的推理天花板

前置知识:第12篇(张量并行)/ 第19篇(vLLM 推理引擎) 引言:编译一次,永久受益 vLLM 是 Python 层面的极致优化,TensorRT-LLM 则更进一步——在 CUDA 核心层做优化。 它的工作方式完全不同: vLLM: 模型加载 → 解释执行 → 每次推理都要"解释"计算图…

作者头像 李华