欢迎访问宙启技术站
智能推送

排序和过滤数据的Python内置函数有哪些?

发布时间:2023-06-20 05:34:41

Python内置了许多用于排序和过滤数据的函数,这些函数几乎可以用于所有数据类型,无论是数字、字符串、元组、列表或者是字典等等。本文将介绍Python中常见的排序和过滤函数。

排序函数

1. sorted()函数

该函数可以用于任何可迭代对象,例如:列表、元组、字符串等。该函数会根据所给的参数进行排序,默认为升序排列,也可以通过reverse=True参数实现降序排列。例如:

lst = [8, 3, 6, 1, 5]
lst_1 = sorted(lst)
lst_2 = sorted(lst, reverse=True)
print(lst_1) # [1, 3, 5, 6, 8]
print(lst_2) # [8, 6, 5, 3, 1]

2. sort()方法

该方法只适用于列表类型。与sorted()函数类似,sort()方法也默认升序排序,可以通过reverse=True参数实现降序排列。该方法是在原列表的基础上进行排序,并返回None。例如:

lst = [8, 3, 6, 1, 5]
lst.sort()
print(lst)   # [1, 3, 5, 6, 8]

3. heapq

heapq是Python提供的一个堆排序模块,常用于处理大规模数据时的排序问题。它提供了堆排序算法,满足任意数组的堆属性(父节点的值总是大于或者等于它的子节点)。可以使用heapq模块中的heapify()函数实现将一个列表转换成堆,通过heappop()实现取出堆顶元素,可以实现堆排序的奥义。例如:

import heapq
lst = [8, 3, 6, 1, 5]
heapq.heapify(lst)
lst_1 = [heapq.heappop(lst) for i in range(len(lst))] # [1, 3, 5, 6, 8]

过滤函数

1. filter()函数

该函数可以对一个序列(一般是列表、元组、字典或者集合)进行过滤,保留符合条件的元素。其返回值为一个迭代器对象,需要使用list()或for循环等方式进行遍历得到过滤后的元素。例如:

lst = [3,8,9,5,6,10]
num_lst = list(filter(lambda x: x % 2 == 0,lst))
print(num_lst)  # [8, 6, 10]

2. map()函数

该函数作用于序列中的所有数据,并把结果作为迭代器返回。可用于对序列中的数据进行一定的规律性更改,例如:数值转化,大小写转化,奇偶转换等。例如:

lst = [2,3,4,5,6,7]
new_lst = list(map(lambda x: x*x, lst))
print(new_lst)   # [4, 9, 16, 25, 36, 49]

3. reduce()函数

该函数可以对一个序列的所有数据进行计算,返回一个结果。reduce() 函数会对参数序列中的元素进行累积,函数将一个数据序列缩减为单个结果。例如:

from functools import reduce
lst = [1, 2, 3, 4, 5]
sum_lst = reduce(lambda x, y: x + y, lst)
print(sum_lst)   # 15

结论

Python 可以方便的使用一系列先进的排序和过滤函数来实现各种数据处理需求。使用这些函数可以使代码简介优雅且高效。本文介绍的函数只是其中的冰山一角,还有许多优秀的函数可以满足更加深度的需求。对于不同的需求,可以根据需要选用适当的排序和过滤函数。