当我们在 Python 中要对一个列表进行排序时,可以使用两种不同的方式,分别是 sort()
和 sorted()
。虽然这两种方式都可以达到同样的目的,但它们在实现上有所不同。
sort()
方法
sort()
是针对列表进行就地排序(即排序后会改变原列表),它的语法如下:
lst.sort(key=None, reverse=False)
其中,key
是一个用于比较的函数或 lambda 表达式,reverse
是一个布尔值,表示排序顺序(若为 True
则降序,否则为升序)。如果不指定 key
,则按照元素的默认顺序进行排序。
下面的代码示例演示了如何使用 sort()
方法进行排序:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
numbers.sort() # 默认升序排序
print(numbers) # 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
numbers.sort(reverse=True) # 降序排序
print(numbers) # 输出:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
sorted()
函数
sorted()
是一个内置的函数,它可以针对任何可迭代对象进行排序(不仅限于列表),并且它不会改变原对象,而是返回一个新的已排序的对象。它的语法如下:
sorted(iterable, key=None, reverse=False)
其中,iterable
是需要排序的可迭代对象,key
和 reverse
含义与 sort()
方法相同。
下面的代码示例演示了如何使用 sorted()
函数进行排序:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
new_numbers = sorted(numbers) # 默认升序排序
print(new_numbers) # 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
new_numbers = sorted(numbers, reverse=True) # 降序排序
print(new_numbers) # 输出:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
上面这个示例中,我们首先定义了一个包含一些数字的列表。我们可以使用 sorted()
函数对其进行排序,并将排序后的结果存储在一个新的变量中,而不会改变原始列表的顺序。同时,我们也可以使用 sorted()
函数的 key
参数来指定按照数字的绝对值对列表进行排序:
numbers = [3, -1, 4, -1, 5, 9, -2, 6, 5, -3, 5]
new_numbers = sorted(numbers, key=abs) # 按照元素绝对值升序排序
print(new_numbers) # 输出:[-1, -1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
上面这个示例中,我们使用 abs
函数作为 key
参数,以便按照数字的绝对值对列表进行排序。最终的结果是一个升序排序的列表,其中数字的顺序是按照它们的绝对值而不是它们的实际值进行排序的。
总之,无论是 sort()
方法还是 sorted()
函数,它们都可以帮助我们对列表进行排序,但它们的实现方式不同,我们可以根据实际情况选择使用哪一种方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python列表排序用 sort()和sorted()的区别 - Python技术站