Python - 排序列表



在 Python 中对列表进行排序

在 Python 中对列表进行排序是一种根据定义的标准(例如数字或字典顺序)以升序或降序排列列表元素的方法。

这可以使用内置的 sorted() 函数或通过在列表本身上调用 sort() 方法来实现,这两种方法都会修改原始列表或返回新的排序列表,具体取决于使用的方法。

使用 sort() 方法对列表进行排序

python sort() 方法用于对列表的元素进行排序。这意味着它会修改原始列表,并且不会返回新列表。

语法

使用 sort() 方法的语法如下 -


 list_name.sort(key=None, reverse=False)

哪里

  • list_name 是要排序的列表的名称。
  • 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 是其元素要排序的可迭代对象(例如,list、tuple、string)。
  • key (可选) 是定义排序标准的函数。如果提供,则将其应用于可迭代对象的每个元素以进行排序。默认值为 None。
  • reverse (可选) 是一个布尔值。如果为 True,则 iterable 将按降序排序。如果为 False (默认),则可迭代对象将按升序排序。

在下面的示例中,我们使用 sorted() 函数对数字列表进行排序并检索新的排序列表 -


numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
# Sorting in descending order
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” 参数指定自定义排序标准,该参数接受回调函数。此回调函数定义应如何比较和排序元素。

使用 str.lower() 作为 key 参数的示例

Python 中的 str.lower() 方法用于将字符串中的所有字符转换为小写。它返回一个新字符串,其中所有字母字符都转换为小写,同时保持非字母字符不变。

在此示例中,我们将 str.lower() 方法作为参数传递给 sort() 函数中的 “key” 参数 −


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']

示例:使用用户定义的 Function 作为键参数

我们还可以使用 user-defined 函数作为 sort() 方法中的关键参数。

在此示例中,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]