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

Python常见的高阶函数

发布时间:2023-06-23 16:06:38

Python是一门面向对象、解释型、动态类型的编程语言,它在现代软件开发领域中具有广泛的应用,这其中高阶函数是其重要特性之一。高阶函数是指把函数作为参数传递、或者把函数作为返回值返回的函数,它为开发者提供了更加灵活的编码方式,也是函数式编程的重要概念之一。本文将带领读者了解Python中常见的高阶函数。

1. map()

map()函数是Python中最常用的高阶函数之一,它接受一个函数和一个可迭代对象,并将该函数应用到对象中的每个元素上。这样就可以很便捷地对一个序列进行计算,并返回一个新的列表。

举个例子,我们要将一个列表中的每个元素都平方:

numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared)

输出结果为:[1, 4, 9, 16, 25]

2. filter()

filter()函数与map()函数类似,也是针对一个可迭代对象进行操作。但是不同的是,它接受一个返回值为布尔类型的函数,并将该函数应用到对象中的每个元素上。如果函数的返回值为True,则保留该元素,否则删除该元素。这样就可以很方便地过滤出一个序列中符合要求的元素。

举个例子,我们要过滤出一个列表中所有的奇数:

numbers = [1, 2, 3, 4, 5]
odds = list(filter(lambda x: x%2!=0, numbers))
print(odds)

输出结果为:[1, 3, 5]

3. reduce()

reduce()函数是一个非常有用的函数,它能够对一个可迭代对象中的所有元素进行归纳、累计计算。这个函数接受两个参数:一个用于执行累计操作的函数和一个可迭代对象。

举个例子,我们要计算一个列表中所有元素的乘积:

from functools import reduce
numbers = [1, 2, 3, 4, 5]
product = reduce(lambda x, y: x*y, numbers)
print(product)

输出结果为:120

4. sorted()

sorted()函数是一个非常常用的函数,它接受一个可迭代对象作为参数,并返回一个按照指定规则排序后的新的列表。

举个例子,我们要对一个列表中的元素进行升序排序:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(numbers)
print(sorted_list)

输出结果为:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

在Python中,sorted()函数还可以接受一个关键字参数,用于指定排序时的规则。例如,我们要对一个列表中的元素按照绝对值大小进行排序:

numbers = [-3, 1, -4, 1, 5, -9, 2, 6, -5, 3, 5]
sorted_list = sorted(numbers, key=abs)
print(sorted_list)

输出结果为:[1, 1, 2, 3, -3, -4, 5, -5, 6, -9, 5]

5. any()和all()

any()函数是一个非常有用的函数,它接受一个可迭代对象作为参数,并返回一个布尔值。如果可迭代对象中存在一个元素的值为True,则函数返回True,否则返回False。

举个例子,我们要判断一个列表中是否存在奇数:

numbers = [2, 4, 6, 8, 10]
print(any(x%2!=0 for x in numbers))

输出结果为:False

all()函数与any()函数类似,也是接受一个可迭代对象作为参数,并返回一个布尔值。但是不同的是,只有当可迭代对象中所有元素的值为True时,函数才返回True,否则返回False。

举个例子,我们要判断一个列表中所有元素是否均为偶数:

numbers = [2, 4, 6, 8, 10]
print(all(x%2==0 for x in numbers))

输出结果为:True

6. zip()

zip()函数是一个非常有用的函数,它接受多个可迭代对象作为参数,并将它们一一对应地打包成元组。这样就可以很方便地对多个序列进行操作。

举个例子,我们要对两个列表进行合并:

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
people = list(zip(names, ages))
print(people)

输出结果为:[('Alice', 25), ('Bob', 30), ('Charlie', 35)]

7. enumerate()

enumerate()函数是一个非常有用的函数,它接受一个可迭代对象作为参数,并返回一个由元组组成的枚举对象。每个元组由两个元素组成:元素的索引和元素的值。

举个例子,我们要枚举一个列表中的所有元素:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
for index, value in enumerate(numbers):
    print(index, value)

输出结果为:

0 3
1 1
2 4
3 1
4 5
5 9
6 2
7 6
8 5
9 3
10 5

8. lambda函数

lambda函数也是Python中常用的高阶函数之一,它是一个匿名函数,可以用于简单的表达式和函数式编程。这个函数以lambda关键字开头,后面跟着参数列表和一个冒号,再跟着一个表达式或语句。

举个例子,我们要定义一个函数,用于计算两个数的和:

add = lambda x, y: x + y
print(add(2, 3))

输出结果为:5

本文已经介绍了Python中常见的高阶函数,包括map()、filter()、reduce()、sorted()、any()和all()、zip()、enumerate()以及lambda函数。这些函数为我们提供了更加灵活的编程方式,可以大大提高我们的开发效率。