Python 列表排序详解
列表排序是在编程中常见的操作。Python 提供了多种方法来对列表进行排序。本教程将深入浅出地介绍 Python 中列表排序的方法,并通过示例帮助你快速掌握。
Python 列表对象内置了一个非常方便的 sort()
方法,可以对列表中的元素进行原地排序。所谓原地排序,指的是直接修改原列表,而不是创建一个新的排序后的列表。sort()
方法默认使用小于号 <
来比较元素之间的大小关系。
sort()
方法详解
sort()
方法还接受两个可选的关键字参数,可以定制排序的行为:
key
: 这个参数允许你指定一个函数,这个函数会应用于列表中的每一个元素,然后使用函数的返回值来进行排序。这在需要根据元素的某个特定属性进行排序时非常有用。reverse
: 这是一个布尔值参数,用于控制排序的顺序。如果设置为True
,列表将按降序排序;如果设置为False
(默认值),则按升序排序。
sort()
方法示例
python
# 数字列表排序
l = [34, 4, 6, 23]
l.sort() # 默认升序排序
print(l) # 输出: [4, 6, 23, 34]
l = [34, 4, 6, 23]
l.sort(reverse=True) # 降序排序
print(l) # 输出: [34, 23, 6, 4]
# 字符串列表排序 (按字母顺序)
l = ["Oh", "Hi", "Py", "ed"]
l.sort()
print(l) # 输出: ['Hi', 'Oh', 'Py', 'ed'] (根据ASCII码排序)
# 字符串列表排序 (忽略大小写)
l = ["Oh", "Hi", "Py", "ed"]
l.sort(key=str.lower) # 使用 str.lower 函数将字符串转换为小写后再排序
print(l) # 输出: ['ed', 'Hi', 'Oh', 'Py']
在上面的例子中,str.lower
函数被用作 key
参数的值。这意味着在比较字符串之前,sort()
方法会先将它们转换为小写,然后再进行比较,从而实现忽略大小写的排序。
sorted()
函数
如果你不想修改原始列表,而是希望创建一个新的已排序的列表,可以使用内置的 sorted()
函数。 sorted()
函数接受一个可迭代对象(例如列表)作为参数,并返回一个新的已排序的列表,原始列表保持不变。
sorted()
函数示例
python
l = [34, 4, 6, 23]
new_l = sorted(l) # 创建一个新的排序后的列表
print(new_l) # 输出: [4, 6, 23, 34]
print(l) #输出: [34, 4, 6, 23] (原始列表未被修改)
sort()
是列表的一个方法,用于原地排序列表。sorted()
是一个内置函数,返回一个新的已排序的列表,不改变原始列表。key
参数可以指定一个函数,用于在排序之前对每个元素进行转换。reverse
参数控制排序的顺序(升序或降序)。