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

📅 2026/7/5 14:08:38 👁️ 阅读次数 📝 编程学习
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]