python学习笔记-Day04-第三部分(内置函数,map,filter,reduce,yield)

map
遍历序列,对其中的每个元素进行相应的操作,最终获得新的序列
lst =[1,2,3,4]
def fun(arg):
    return arg+10
new_lst = map(fun,lst)


def fun2(a1,a2):
    return a1+a2
lst01 = [11,22,33]
lst02 = [1,2,3]
map(func2,lst01,lst02)  #序列的长度需要一致

或者 map(lambda a1,a2,a3:a1+a2,lst01,lst02)


#################################################################
filter
有两个参数,第一参数是函数或者None 第二个参数是一个序列
接收一个函数或者None,返回符合条件的元素组成的集合


lst = [1,2,3,4,5,0]
print filter(None,li) # 遍历所有元素,并过滤掉 布尔值为假的元素,此时输入布尔值为真的元素。
输出大于3的元素
print  filter(lambda a:a>3,lst)

#################################################################


reduce
对序列内的元素进行累计操作,返回一个结果

# reduce的第一个参数,函数必须要有两个参数
# reduce的第二个参数,要循环的序列
# reduce的第三个参数,初始值


li = [11, 22, 33]

result = reduce(lambda arg1, arg2: arg1 + arg2, li)

# reduce的第一个参数,函数必须要有两个参数
# reduce的第二个参数,要循环的序列
# reduce的第三个参数,初始值



#################################################################


yield 生成器
记住上一次的操作,下次在执行的时候,可以继续执行

def fun():
    yield 1
    yield 2
    yield 3
for i in fun():
    print i

结果:
1
2
3

自定义生成器:

def myrange(num):
    seed =0
    while True:
        if seed>=num:
            break
        seed+=1
        yield seed

for i in myrange(10):
    print i

你可能感兴趣的:(python,filter,map,reduce,内置函数,yield)