Python有关的函数学习应用

一、递归函数:

定义:

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

举个例子,我们来计算阶乘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

 
 

 

猜你喜欢

转载自www.cnblogs.com/Wang1107/p/11731269.html
今日推荐