python怎么排序

1. Python中的排序

在Python中,排序是一种非常常见且重要的算法,几乎在日常的工作、学习以及生活中都有应用。排序可以将一组数据按照一定的方式排列,让数据的特征更加明显,方便查找或应用。Python中提供了多种不同的排序算法,可以根据不同的场合和需求选择不同的算法。

1.1 内置排序函数sorted()

Python中内置的排序函数sorted()可以对可迭代对象进行排序。sorted()可以接受一个可迭代对象,并返回一个新的已排序的列表。默认情况下,sorted()使用升序排序。可以通过参数reverse=True来实现降序排序。

下面是使用sorted()函数对一个列表进行升序排列的示例:

lst = [7, 3, 9, 1, 4]

sorted_lst = sorted(lst)

print(sorted_lst)

# 输出结果为[1, 3, 4, 7, 9]

下面是使用sorted()函数对一个列表进行降序排列的示例:

lst = [7, 3, 9, 1, 4]

sorted_lst = sorted(lst, reverse=True)

print(sorted_lst)

# 输出结果为[9, 7, 4, 3, 1]

1.2 sort()方法

除了使用sorted()函数排序之外,Python中的列表还可以使用sort()方法进行排序。sort()方法是对原列表进行排序,不返回新的列表。sort()方法默认是升序排序,可以通过参数reverse=True来实现降序排序。

下面是使用sort()方法对一个列表进行升序排序的示例:

lst = [7, 3, 9, 1, 4]

lst.sort()

print(lst)

# 输出结果为[1, 3, 4, 7, 9]

下面是使用sort()方法对一个列表进行降序排序的示例:

lst = [7, 3, 9, 1, 4]

lst.sort(reverse=True)

print(lst)

# 输出结果为[9, 7, 4, 3, 1]

1.3 在sorted()函数中使用key参数

在使用sorted()函数进行排序时,可以使用key参数指定一个函数来计算比较值。sorted()函数会将可迭代对象中的每个元素传入key函数,并使用key函数返回的值进行排序。

下面是一个示例,使用sorted()函数和key参数按照字符串长度进行排序:

lst = ['apple', 'orange', 'banana', 'pear']

sorted_lst = sorted(lst, key=lambda x: len(x))

print(sorted_lst)

# 输出结果为['pear', 'apple', 'orange', 'banana']

在上面的示例中,lambda表达式作为key参数,将每个字符串的长度作为比较值进行排序。

1.4 在sort()方法中使用key参数

sort()方法同样可以使用key参数指定一个函数来计算比较值。sort()方法会将列表中的每个元素传入key函数,并使用key函数返回的值进行排序。

下面是一个示例,使用sort()方法和key参数按照字符串长度进行排序:

lst = ['apple', 'orange', 'banana', 'pear']

lst.sort(key=lambda x: len(x))

print(lst)

# 输出结果为['pear', 'apple', 'orange', 'banana']

2. 常用的排序算法

2.1 冒泡排序

冒泡排序是一种简单的排序算法,它的基本思想是将相邻的两个元素进行比较和交换,重复多次,直到没有任何一对元素需要比较为止。

下面是一个示例,使用冒泡排序对一个列表进行排序:

def bubble_sort(lst):

n = len(lst)

for i in range(n - 1):

for j in range(n - 1 - i):

if lst[j] > lst[j + 1]:

lst[j], lst[j + 1] = lst[j + 1], lst[j]

return lst

lst = [7, 3, 9, 1, 4]

sorted_lst = bubble_sort(lst)

print(sorted_lst)

# 输出结果为[1, 3, 4, 7, 9]

在上面的示例中,使用两层循环遍历列表,并将相邻的两个元素进行比较和交换,直到最大值移动到了列表的末尾。

2.2 快速排序

快速排序是一种基于分治的排序算法,它的基本思想是选择一个基准元素,将列表中的元素分成两个部分,一部分小于基准元素,一部分大于基准元素,然后对这两部分分别进行递归排序。

下面是一个示例,使用快速排序对一个列表进行排序:

def quick_sort(lst):

if len(lst) <= 1:

return lst

pivot = lst[0]

left_lst = [x for x in lst[1:] if x <= pivot]

right_lst = [x for x in lst[1:] if x > pivot]

return quick_sort(left_lst) + [pivot] + quick_sort(right_lst)

lst = [7, 3, 9, 1, 4]

sorted_lst = quick_sort(lst)

print(sorted_lst)

# 输出结果为[1, 3, 4, 7, 9]

在上面的示例中,使用了递归的思想,首先选择一个基准元素,然后将列表分成小于和大于基准元素的两部分,分别对它们进行递归排序。

2.3 归并排序

归并排序是一种基于分治的排序算法,它的基本思想是把一个大的列表分成两个小的列表,然后分别对它们进行递归排序,最后将它们合并成一个有序的列表。

下面是一个示例,使用归并排序对一个列表进行排序:

def merge_sort(lst):

if len(lst) <= 1:

return lst

mid = len(lst) // 2

left_lst = merge_sort(lst[:mid])

right_lst = merge_sort(lst[mid:])

return merge(left_lst, right_lst)

def merge(left_lst, right_lst):

l, r = 0, 0

merged_lst = []

while l < len(left_lst) and r < len(right_lst):

if left_lst[l] < right_lst[r]:

merged_lst.append(left_lst[l])

l += 1

else:

merged_lst.append(right_lst[r])

r += 1

merged_lst += left_lst[l:]

merged_lst += right_lst[r:]

return merged_lst

lst = [7, 3, 9, 1, 4]

sorted_lst = merge_sort(lst)

print(sorted_lst)

# 输出结果为[1, 3, 4, 7, 9]

在上面的示例中,使用了递归的思想,首先将原来的列表分成两个小的列表,然后对它们分别进行递归排序,最后将它们合并成一个有序的列表。

3. 总结

Python中提供了多种不同的排序算法,可以根据不同的场合和需求选择不同的算法。内置排序函数sorted()和sort()方法可以快速地实现排序,而冒泡排序、快速排序和归并排序等算法则是典型的排序算法,具有重要的理论价值和实际应用价值。

后端开发标签