zoukankan      html  css  js  c++  java
  • python学习-29 map函数-filter函数

    movie_person = ['小红','小明','小王','富豪_sb','美女_sb']
    
    def filter_test(array):
        ret = []
        for i in array:
            if not i.startswith(''):   # 以‘小’开头的
                ret.append(i)
        return  ret
    print(filter_test(movie_person))
    
    
    
    def filter_test(array):
        res = []
        for i in array:
            if not i.endswith('sb'):   # 以‘sb’结尾的
                res.append(i)
        return  res
    print(filter_test(movie_person))

    运行结果:

    ['富豪_sb', '美女_sb']
    ['小红', '小明', '小王']
    
    Process finished with exit code 0

    或另一种简单的方法:

    movie_person = ['小红','小明','小王','富豪_sb','美女_sb']
    
    def filter_test(func,array):
        ret = []
        for i in array:
            if not func(i):   
                ret.append(i)
        return  ret
    
    res = filter_test(lambda x:x.endswith('sb'),movie_person)   # 以‘sb’结尾的
    print(res)

    运行结果:

    ['小红', '小明', '小王']
    
    Process finished with exit code 0

    reduce函数

    1.加法和乘法(两种方法)

    from functools import reduce            # 调用 reduce函数
    
    num_1 = [1,2,3,4,5,6,7,8,9,100]
    
    def reduce_test(array):
        res = 0
        for num in array:
            res += num
        return res
    print(reduce_test(num_1))
    
    
    def reduce_test(func,array):
        res = array.pop(0)            # 将列表的值一个一个传值
        for num in array:
            res =func(res,num)
        return res
    print(reduce_test(lambda  x,y:x*y,num_1))     # 用lambda 进行乘法运算

    运行结果:

    145
    36288000
    
    Process finished with exit code 0

    2.传一个初始值

    from functools import reduce            # 调用 reduce函数
    
    num_1 = [1,2,3,4,5,6,7,8,9,100]
    
    def reduce_test(func,array,init = None):
        if init is None:
            res = array.pop(0)
        else:
            res = init
        for num in array:
            res = func(res,num)
        return res
    print(reduce_test(lambda x,y:x*y,num_1,100))     # 传了一个初始值100,以100开始乘以列表里的每个数

    运行结果:

    3628800000
    
    Process finished with exit code 0
  • 相关阅读:
    《ACM国际大学生程序设计竞赛题解I》——6.8
    数据结构篇
    从SG函数浅谈解决博弈问题的通法
    动态规划的泛式解题思路
    bzoj1057: [ZJOI2007]棋盘制作
    bzoj3884: 上帝与集合的正确用法
    bzoj1564: [NOI2009]二叉查找树
    bzoj4347: [POI2016]Nim z utrudnieniem
    bzoj1131: [POI2008]Sta
    bzoj1566: [NOI2009]管道取珠
  • 原文地址:https://www.cnblogs.com/liujinjing521/p/11154012.html
Copyright © 2011-2022 走看看