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

Python中常用的高阶函数介绍

发布时间:2023-06-01 08:03:16

Python中高阶函数指的是函数能够作为参数传递给另一个函数或返回函数作为结果。这种函数组合的特性让我们在编写代码时可以更加灵活。

1. map函数

map函数可以将一个函数作用于一个可迭代对象中的所有元素,并返回一个新的可迭代对象。比如:

nums = [1, 2, 3, 4, 5]
square_nums = map(lambda x: x**2, nums)
print(square_nums)

# 输出:[1, 4, 9, 16, 25]

2. filter函数

filter函数可以从一个可迭代对象中筛选出符合条件的元素,并返回一个新的可迭代对象。比如:

nums = [1, 2, 3, 4, 5]
even_nums = filter(lambda x: x % 2 == 0, nums)
print(even_nums)

# 输出:[2, 4]

3. reduce函数

reduce函数可以对可迭代对象中的所有元素进行累积计算,比如求和、求积等。需要注意的是,reduce函数需要从functools模块中导入。比如:

from functools import reduce

nums = [1, 2, 3, 4, 5]
sum_nums = reduce(lambda x, y: x+y, nums)
print(sum_nums)

# 输出:15

4. sorted函数

sorted函数可以对可迭代对象进行排序,并返回一个新的列表。sorted函数的关键字参数key可以指定排序的依据。比如:

nums = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_nums = sorted(nums)
print(sorted_nums)

# 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

words = ['hello', 'world', 'python', 'is', 'awesome']
sorted_words = sorted(words, key=len)
print(sorted_words)

# 输出:['is', 'hello', 'world', 'python', 'awesome']

5. zip函数

zip函数可以将多个可迭代对象中的元素一一对应,返回一个新的可迭代对象。比如:

nums1 = [1, 2, 3]
nums2 = [4, 5, 6]
zipped = zip(nums1, nums2)
print(list(zipped))

# 输出:[(1, 4), (2, 5), (3, 6)]

6. any和all函数

any函数可以判断可迭代对象中是否存在至少一个元素为True,返回True或False。all函数则判断可迭代对象中的所有元素是否都为True,返回True或False。比如:

nums = [0, 1, 2, 3, 4, 5]
has_zero = any(num==0 for num in nums)
print(has_zero)

# 输出:True

all_even = all(num%2==0 for num in nums)
print(all_even)

# 输出:False

7. partial函数

partial函数可以将一个函数的某些参数预设为固定值,然后返回一个新的函数。比如:

from functools import partial

def add(a, b):
    return a + b

add_two = partial(add, 2)
print(add_two(3))

# 输出:5

总结

以上介绍了Python中常用的高阶函数,这些函数都是Python语言中的核心特性。熟练掌握高阶函数的使用,可以让我们写出更加简洁、优雅的代码。