python10-高阶函数
def use_filer(l):"""
获取指定列表/元组中的奇数
:param l: lsit/tuple
:return:
"""
rest = filter(lambda n:n % 2 != 0,l)
return rest
if __name__ == '__main__':
l = [1,2,3,4,5,6,7,8,9]
rest = use_filer(l)
print(list(rest))
结果
[1, 3, 5, 7, 9]
filter函数的原理def is_even(x):
return x%2==0
tmp = filter(is_even,range(10))
list(tmp)
#最后一定要按照原来的类型转换回来
通过函数f筛选序列中的元素
filter(f,eq)
eq:待过滤的序列
f:过滤规则
tmp = filter(lamda n : n % 2 == 0,range(10))
map是python内置函数" title="python内置函数">python内置函数,会根据提供的函数对指定的序列做映射。map()函数的格式是:
map(function,iterable,...)
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。
把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。
def use_filer(l):"""
获取指定列表/元组中的奇数
:param l: lsit/tuple
:return:
"""
rest = filter(lambda n:n % 2 != 0,l)
return rest
if __name__ == '__main__':
l = [1,2,3,4,5,6,7,8,9]
rest = use_filer(l)
print(list(rest))
def pow_number(l):
"""
给定列表,放回每一项的立方
:param l:
:return:
"""
rest_list = []
for x in l:
rest_list.append(x*x*x)
return rest_list
def pow_number_map(l):
"""
:param l:
:return:
"""
#return map(f,l)
return map(lambda n:n*n*n,l)
if __name__ == "__main__":
rest = pow_number(l)
print(rest)
print("++++++++++++++++++++++")
rest = pow_number_map(l)
print(list(rest))
结果:
[1, 3, 5, 7, 9][1, 8, 27, 64, 125, 216, 343, 512, 729]
++++++++++++++++++++++
[1, 8, 27, 64, 125, 216, 343, 512, 729]
from functools import reducedef get_sum(l):
"""
求和
:param l:
:return:
"""
rest = 0
for i in l:
rest += i
return rest
def get_sum_use_py(l):
"""
使用内置函数
:param l:
:return:
"""
return sum(l)
def get_sum_use_reduce(l):
"""
使用reduce函数求和
:param l:
:return:
"""
return reduce(lambda n,m:n + m,l)
if __name__ == "__main__":
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(get_sum(l))
print(get_sum_use_py(l))
print("!!!!!!!!!!!!!!!!!!!")
print(get_sum_use_reduce(l))
结果
python中的reduce
python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。
如:
def myadd(x,y):return x+y
sum=reduce(myadd,(1,2,3,4,5,6,7))
print(sum)
#结果就是输出1+2+3+4+5+6+7的结果即28
当然,也可以用lambda的方法,更为简单:
sum=reduce(lambda x,y:x+y,(1,2,3,4,5,6,7))print sum
在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce.
python中的reduce
python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。
如:
def myadd(x,y):return x+y
sum=reduce(myadd,(1,2,3,4,5,6,7))
print(sum)
#结果就是输出1+2+3+4+5+6+7的结果即28
当然,也可以用lambda的方法,更为简单:
sum=reduce(lambda x,y:x+y,(1,2,3,4,5,6,7))print sum
在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce.
以上是 python10-高阶函数 的全部内容, 来源链接: utcz.com/z/387687.html