一、递归函数:
定义:
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n
,用函数fact(n)
表示,可以看出:
fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n
所以,fact(n)
可以表示为n x fact(n-1)
,只有n=1时需要特殊处理。
于是,fact(n)
用递归的方式写出来就是:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
二、匿名函数lambda:
定义:
原型:lambda<参数>:函数体,隐函数,定义一些简单的操作。
1、lambda是一个表达式。
lambda可以出现在python语法不允许def出现的地方;例:在一个列表常量中或者函数调用的参数中,此外,作为一个表达式,lambda返回一个值(一个新函数),可以选择性地赋值给一个变量名。但def语句总是得在头部将一个新的函数赋值给一个变量名,而不是将这个函数作为结果返回。
2、lambda的主体是一个单个的表达式,不是一个代码块。
lambda是一个为编写简单的函数设计的,而def用来处理更大的任务。
3、lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。
注意:关于lambda匿名函数的格式,冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。其实lambda返回值是一个函数的地址,也就是函数对象。
例:lambda表达式运用
p = lambda x,y:x+y
print(p(4,6))
运行结果:10
三、filter函数:
定义:
filter函数会对指定序列执行过滤操作。
filter函数的定义:
1.filter(functon or None, sequence) ->iterator
2.filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的元素。
3.返回课迭代对象,需要用list调用来显示所有结果
4.filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判定,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
例:过滤表出中所有奇数
def is_odd(n):
return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)
运行结果:[1, 3, 5, 7, 9]
四、map()函数:
定义:
1.map() 会根据提供的函数对指定序列做映射。
2.第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
语法:
map(function, iterable, ...)
例:计算列表中各数的平方
def square(x) : return x ** 2 map(square, [1,2,3,4,5]) map(lambda x: x ** 2, [1, 2, 3, 4, 5]) map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) print(list(map(square, [1,2,3,4,5]))) print(list(map(lambda x: x ** 2, [1, 2, 3, 4, 5])))
print(list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
运行结果:[1, 4, 9, 16, 25]
[1, 4, 9, 16, 25]
[3, 7, 11, 15, 19]
五、zip()函数:
定义:
1.zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
2.我们可以使用 list() 转换来输出列表。
3.如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
语法:
zip([iterable, ...])
例:以下是有关函数应用的实例
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b)
list(zipped)
a1, a2 ,a3= zip(*zip(a,b,c))
print(list(a1))
print(list(a2))
print(list(a3))
运行结果:[1, 2, 3]
[4, 5, 6]
[4, 5, 6]
元组与列表的区别参考博文:https://blog.csdn.net/fanzirong_/article/details/81273477