Python 简明教程
Python - Sort Lists
Sorting Lists in Python
用 Python 对列表进行排序是一种按照既定条件(例如数字顺序或字典顺序)以升序或降序排列列表元素的方法。
这可以通过使用内置的 sorted() 函数或调用列表本身的 sort() 方法来实现,这两种方法都会修改原始列表或根据所用的方法返回一个新的已排序列表。
Sorting Lists Using sort() Method
python sort() method 用于就地对列表的元素进行排序。这意味着它会修改原始列表,并且不会返回一个新列表。
Syntax
使用 sort() 方法的语法如下 −
list_name.sort(key=None, reverse=False)
其中,
-
list_name 是要排序的列表的名称。
-
key (optional) 是定义排序条件的函数。如果提供,则将其应用于列表的每个元素进行排序。默认值为无。
-
reverse (optional) 是一个布尔值。如果为 True,则列表将按降序排列。如果为 False(默认值),则列表将按升序排列。
Example of Sorting List in Lexicographical Order
在以下示例中,我们使用 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']
Sorting Lists Using sorted() Method
Python 中的 sorted() 函数是一个用于对可迭代对象(如列表、元组或字符串)的元素进行排序的内置函数,并返回一个新的已排序列表,而不会改变原始的可迭代对象。
Sorting List Items with Callback Function
在 Python 中,回调函数是指作为另一个函数的参数传递给该函数,并在该函数中调用或执行的函数
我们可以使用 sorted() 函数或 Python 中的 sort() 函数,通过回调函数对列表项进行排序。这两个函数都允许我们使用“key”参数指定自定义排序标准,该参数接受回调函数。此回调函数定义了元素的比较和排序方式。
Example Using str.lower() as key Parameter
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)
它将生成以下 output −
list before sort ['Physics', 'biology', 'Biomechanics', 'psychology']
list after sort : ['biology', 'Biomechanics', 'Physics', 'psychology']
Example Using user-defined Function as key Parameter
我们还可以使用用户定义的 function 作为 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]