当前位置: 首页 > news >正文

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]
http://www.jsqmd.com/news/1128622/

相关文章:

  • Claude Code auto mode 管理 subagents 的三道安全闸门
  • 鸿蒙物理 108 篇 第六十六篇 土气中和承载定则
  • AI Agent Skills 筛选与落地:从信息过载到高效生产力构建指南
  • 终极Windows系统优化神器:五分钟让你的电脑焕然一新
  • 小小五子棋
  • PyTorch LSTM 时间序列预测实战:NASA IGBT 老化数据预测,Test Loss 降至 0.004
  • Harness Engineering:构建可靠AI应用的系统工程方法实战
  • 3分钟解除Cursor试用限制:新手友好的完整解决方案指南
  • 从PCF到Xenium:空间蛋白组与空间转录组如何互补解析GBM组织生态
  • Protobuf的介绍及使用
  • 【信息科学与工程学】【制造工程】第八十七篇 制造工程中的热学01
  • 私有化 AI 智能体 OpenClaw 2.7.5 升级 2.7.9 完整安装排错手册
  • 抖店一件代发怎么做?抖掌柜一键下单保姆级实操教程
  • 锐捷ACL单向TCP互通组网-使用TCP三次握手SYN包置位为1实现
  • Android 高级工程师面试:JVM 内存与 GC 近1年高频追问 22 题
  • 神经肿瘤免疫研究如何设计空间蛋白组课题?从Cell案例看PCF80应用
  • ComfyUI IPAdapter Plus终极指南:多模态控制与AI图像生成技术深度解析
  • Auto mode 的回退机制,Claude Code 为什么会从自动执行退回人工确认
  • 【每天认识一个国家 | 摩洛哥】
  • VS1053B的非阻塞式播放
  • Fate/Grand Automata:终极Android自动化工具,告别FGO重复刷本
  • 鸿蒙物理 108 篇 第六十八篇 五行反向相克机理
  • Power BI Report Builder实战指南:快速生成合规分页报表
  • leecodecode【面试150】【2026.7.2打卡-java版本】
  • YOLO11改进 - C3k2融合 | C3k2融合CKconv中国结卷积(Chinese Knot Convolution)增强网络对暗弱小目标的特征表达能力 | TGRS 2026
  • 微服务架构下API网关的4种安全方案对比,哪种最适合你的系统?
  • 拼多多推广全攻略高效引流玩法
  • Windows经典游戏联机救星:5分钟让红警、星际、暗黑等老游戏重获新生
  • VLC Android电视版深度配置:打造专业级智能电视媒体中心的7个关键步骤
  • UI自动化测试方案调研:从概念到落地的完整决策指南