深入理解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技术站