在 Python 中对列表进行排序是一种按照定义的标准(例如数值或字典序)来排列列表元素的方法,可以是升序也可以是降序。
这可以通过使用内置的 sorted()
函数或通过调用列表自身的 sort()
方法来实现,具体取决于所使用的方法,这可能会修改原始列表或返回一个新的已排序列表。
使用 sort() 方法排序列表
Python 中的 sort()
方法用于就地排序列表中的元素。这意味着它会修改原始列表,并不会返回一个新的列表。
语法
使用 sort()
方法的语法如下:
list_name.sort(key=None, reverse=False)
其中,
-
-
key
(可选)是一个定义排序标准的函数。如果提供,则应用于列表中的每个元素进行排序。默认值为 None
。
-
reverse
(可选)是一个布尔值。如果为 True
,列表将以降序排序;如果为 False
(默认),列表将以升序排序。
按字典序排序列表的示例
在下面的示例中,我们使用 sort()
函数来按字母顺序对列表的项进行排序:
list1 = ['physics', 'Biology', 'chemistry', 'maths']
print("list before sort:", list1)
list1.sort()
print("list after sort : ", list1)
它将产生以下输出:
list before sort: ['physics', 'Biology', 'chemistry', 'maths']
list after sort : ['Biology', 'chemistry', 'maths', 'physics']
按数值顺序排序列表的示例
在此示例中,我们使用 sort()
函数来按数值顺序对给定列表进行排序:
list2 = [10, 16, 9, 24, 5]
print("list before sort", list2)
list2.sort()
print("list after sort : ", list2)
产生的输出如下:
list before sort [10, 16, 9, 24, 5]
list after sort : [5, 9, 10, 16, 24]
使用 sorted() 方法排序列表
Python 中的 sorted()
函数是一个内置函数,用于排序可迭代对象(如列表、元组或字符串)的元素,并返回一个新的已排序列表,而不会改变原始的可迭代对象。
语法
使用 sorted()
方法的语法如下:
sorted(iterable, key=None, reverse=False)
其中,
-
iterable
是其元素要被排序的可迭代对象(例如列表、元组、字符串)。
-
key
(可选)是一个定义排序标准的函数。如果提供,则应用于可迭代对象中的每个元素进行排序。默认值为 None
。
-
reverse
(可选)是一个布尔值。如果为 True
,可迭代对象将以降序排序;如果为 False
(默认),可迭代对象将以升序排序。
示例
在下面的示例中,我们使用 sorted()
函数来对数字列表进行排序,并获取一个新的已排序列表:
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)
上述代码的输出如下:
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
使用回调函数排序列表项
在 Python 中,回调函数是指作为另一个函数的参数传递并在该函数内被调用的函数。
我们可以使用 Python 中的 sorted()
函数或 sort()
函数以及回调函数来对列表项进行排序。这两个函数都允许我们使用 key
参数指定自定义排序标准,这个 key
参数接受一个回调函数。这个回调函数定义了元素如何比较和排序。
使用 str.lower()
作为 key
参数的示例
Python 中的 str.lower()
方法用于将字符串中的所有字符转换为小写。它返回一个新的字符串,其中所有字母字符都被转换为小写,而非字母字符保持不变。
在这个示例中,我们将 str.lower()
方法作为 key
参数的参数传递给 sort()
函数:
list1 = ['Physics', 'biology', 'Biomechanics', 'psychology']
print("list before sort", list1)
list1.sort(key=str.lower)
print("list after sort : ", list1)
它将产生以下输出:
list before sort ['Physics', 'biology', 'Biomechanics', 'psychology']
list after sort : ['biology', 'Biomechanics', 'Physics', 'psychology']
使用用户定义的函数作为 key
参数的示例
我们也可以在 sort()
方法中使用用户定义的函数作为 key
参数。
在这个示例中,myfunction()
使用 %
操作符返回余数,这决定了排序的方式:
def myfunction(x):
return x % 10
list1 = [17, 23, 46, 51, 90]
print("list before sort", list1)
list1.sort(key=myfunction)
print("list after sort : ", list1)
它将产生以下输出:
list before sort [17, 23, 46, 51, 90]
list after sort: [90, 51, 23, 46, 17]