python 函数式编程

map

>>> map(str,range(20))
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19']

filter

filter 函数可以基于一个返回布尔值的函数对元素进行过滤

>>> def func(x):
...     return x.isalnum()
...
>>> seq=['foo','x41','!!']
>>> filter(func,seq)
['foo', 'x41']

注:isalnum()方法,如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

lambda函数

>>> foo=lambda x:x**x
>>> foo(10)
10000000000

列表推导式

>>> seq
['foo', 'x41', '!!']
>>> [x for x in seq if x.isalnum()]
['foo', 'x41']

lambda表达式的特性

>>> seq
['foo', 'x41', '!!']
>>> [x for x in seq if x.isalnum()]
['foo', 'x41']
>>> filter(lambda x:x.isalnum(),seq)
['foo', 'x41']

reduce 函数

reduce函数一般来说不能轻松被列表推导式替代,但是通常用不到这个功能。它会将序列的前两个元素与给定的函数联合使用,并且将它们返回值和第3个元素继续联合使用,直到整个序列都处理完毕,并且得到一个最终结果。

>>> reduce(lambda x,y:x+y,range(100))
4950
posted @ 2023-02-10 17:40  lifei888  阅读(17)  评论(0)    收藏  举报