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]