十二:重要的内置函数

一:filter 函数(过滤器函数):通常用于过滤的功能,需要加入过滤的条件,过滤的对象为一个可迭代对象的每一个元素,返回一个filter 对象,通过强转换才可以显示内容。

example1:

 1 # filter  过滤器函数
 2 
 3 str = ['a','b','c','d']
 4 
 5 def func(s):   # s 为每一个可迭代对象的元素
 6         if s != 'a':   # filter 只能过滤,有过滤条件
 7             return s
 8 
 9 ret = filter(func,str)   
10 print(ret)                # <filter object at 0x037A55B0>
11 print(list(ret))         # ['b', 'c', 'd']

二:map 函数:参数为一个可迭代对象的每一个元素,是对每一个元素执行相同的操作(通过函数实现具体的操作),返回一个map 对象,同样可以用强制转换来显示内容。

example 2:

 1 # map 函数
 2 
 3 str = ['a','b','c','d']
 4 
 5 def func(s):
 6     return s + 'zhang'   # 无过滤条件,filter不起作用
 7 
 8 ret = filter(func,str)
 9 print(list(ret))          # str==['a', 'b', 'c', 'd'],没有任何改变
10 ret = map(func,str)
11 print(ret)               # <map object at 0x03A15CB0>
12 print(list(ret))         # ['azhang', 'bzhang', 'czhang', 'dzhang']

三:reduce 函数:参数为一个可迭代对象的每一个元素,是对每一个元素执行迭代操作(通过函数实现具体的操作),返回一个具体的值而不是对象。

example 3:

1 # reduce 函数
2 
3 from functools import reduce   # 在py3中需要调用,不是内置函数
4 
5 def add(x,y):
6     return x + y
7 
8 ret = reduce(add,range(1,11))   # 迭代相加,结果不是迭代器,就是一个值
9 print(ret)             #  55

四:lambda 函数(匿名函数):传统的函数需要定义和返回语句,并且需要函数名,但是匿名函数不需要函数名,是一条语句,这条语句和函数有相同的功能。一般情况下和map ,reduce 这些函数配合使用。

格式:lambda x,y : x + y         (其中,x,y 为函数的参数,x+y 为函数的返回值)

example 4:  reduce + lambda 使用实例

1 # lambda 匿名函数
2 # lambda x,y: x * y     参数是 x,y ,返回值是 x*y
3 
4 #    Reduce + lambda
5 
6 ret = reduce(lambda x,y: x * y,range(1,5))  # 迭代操作实现阶乘功能
7 print(ret)   # 24

example 5:map + lambda 使用实例

1 #  map() + lambda
2 
3 square = map(lambda x: x * x,range(5))
4 print(square)       # <map object at 0x016673F0> 一个 map 对象
5 print(list(square)) #  [0, 1, 4, 9, 16]
所有博文均为原著,如若转载,请注明出处!
原文地址:https://www.cnblogs.com/zpcoding/p/9448643.html