Python作为一门功能强大的编程语言,拥有丰富的函数式编程特性。函数式编程强调使用函数作为基本构建块,注重将问题分解为独立的函数,以及使用高阶函数和数据结构来处理数据和逻辑。在Python中,有许多常用的高阶函数和数据结构,如reduce、lru_cache、Counter、partial、defaultdict、zip、all、any、filter和map等。本文将为大家详细介绍这些函数和数据结构的用法和特性,帮助读者更好地理解和应用函数式编程的思想。
1. reduce:
reduce(func, iterable)接收一个函数和一个可迭代对象作为参数,对可迭代对象中的元素依次进行函数操作,返回一个单个的结果。例如:
from functools import reduce
lst = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x + y, lst)
print(result) # 输出15,即1+2+3+4+5的结果
2. map:
map(function, iterable)用于对可迭代对象中的每个元素应用函数,并返回一个新的迭代器。例如:
lst = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x**2, lst)
print(list(squared_numbers)) # 输出[1, 4, 9, 16, 25]
3. filter:
filter(function, iterable)用于过滤可迭代对象中的元素,返回一个满足条件的新迭代器。例如:
lst = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda x: x % 2 == 0, lst)
print(list(even_numbers)) # 输出[2, 4, 6]
4. zip:
zip(*iterables)用于将多个可迭代对象中相同索引位置的元素打包成一个元组,并返回一个可迭代对象。例如:
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = zip(a, b)
print(list(c)) # 输出[(1, 'a'), (2, 'b'), (3, 'c')]
5. all:
all(iterable)用于判断可迭代对象中的所有元素是否都为True。例如:
lst = [True, False, True]
print(all(lst)) # 输出False,因为False存在于可迭代对象中
6. any:
any(iterable)用于判断可迭代对象中的任一元素是否为True。例如:
lst = [True, False, False]
print(any(lst)) # 输出True,因为True存在于可迭代对象中
7. defaultdict:
defaultdict是一个字典的子类,当访问不存在的键时,会返回一个默认值。例如:
from collections import defaultdict
d = defaultdict(int)
print(d['a']) # 输出0,因为'a'键不存在,返回了int的默认值0
8. partial:
partial(func, *args, **keywords)用于部分应用一个函数,固定函数的部分参数。例如:
from functools import partial
def multiply(x, y):
return x * y
double = partial(multiply, 2)
print(double(3)) # 输出6,即2*3的结果
9.Counter
Counter是一个字典的子类,用于计数可哈希对象。例如:
from collections import Counter
lst = [1, 2, 3, 1, 2, 3, 4]
counter = Counter(lst)
print(counter) # 输出Counter({1: 2, 2: 2, 3: 2, 4: 1})
10. lru_cache:
lru_cache(maxsize=None)是一个装饰器函数,用于缓存函数的结果,避免重复计算。maxsize参数指定缓存的最大容量。例如
from functools import lru_cache
@lru_cache(maxsize=128)
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
若有侵权,请联系删除