zoukankan      html  css  js  c++  java
  • python基础学习——函数(二):map educefilter函数

    一、编程式方法论:面向对象、函数式和面向过程

    1 面向过程:返回值函数,基本单位是函数。

      找到解决问题的入口,按照固定的流程去模拟解决问题的流程,对过程细分,每次都从头运行,比函数式易读

    2 函数式:编程式定义的函数+数学意义的函数

       特性:不可变,不用变量保存状态,变量不可修改,没有赋值的操作

          第一类对象,函数即“变量”

    3、高阶函数:满足如下条件之一:

      1)函数接受的参数是另外一个函数

    #把函数当作参数传给另外一个函数
    def  foo(n):#n=bar
        print(n)
    def bar(name):
        print("my name is %s" %name)
    foo(bar)#n=bar
    
    方式二:
    def  foo(n):#n=bar
        print(n)
    def bar(name):
        print("my name is %s" %name)
    
    foo(bar("abc") )
    结果:
    
    my name is abc
    None
    #  bar没有返回值,故传none给foo  

      2)返回值中包含函数

    #返回值中包含函数
    def bar():
        print("from bar")
    def foo():
        print("from foo")
        return  bar
    n=foo()
    n()
    
    
    结果:
    
    from foo
    from bar

    二、map函数

      1、特征:处理序列中的每个元素,得到的结果是一个“列表”,该“列表“元素个数及位置与原来一样

       逻辑简单用lambda,逻辑复杂使用自定义函数

       待处理的数据类型是可迭代对象即可,与for循环一起配合实现

      2、样例

    eg1

        map_test(数据处理的方法和逻辑,待处理的可迭代的数据类型的数据)

        

    num=[3,4,2,94,5,9,23]
    def add_one(x):
        return x+1
    def reduce_one(x):
        return x-2
    def map_test(func,array):
        ret=[]
        for i in array:
            res=func(i)#add_one(i)
            ret.append(res)
        return ret
    print(map_test(add_one,num))
    print(map_test(lambda x:x-1,num))
    print(list(map(lambda x:x**2,num)))
    print(list(map(reduce_one,num)))

    eg2

    mag="linhang"
    print(list(map(lambda x:x.upper(),mag)))

    三、filter函数

      1、函数特征:遍历序列中的每个元素,判断每个元素后得到布尔值,如果是真,则保留下来,最后得出一个新的列表组合

      filter(数据处理的方法逻辑返回值是布尔值,待处理的可循环的数据)

    样例

    movie_people=["nana-x","nana1-x","xiaoxiao","KK","nana"]
    
    def x_show(n):
        return n.endswith("x")
    
    def filter_test(func,array):
        ret=[]
        for i in array:
            if not func(i):
                ret.append(i)
        return ret
    print(list(filter(x_show,movie_people)))
    print(list(filter(lambda x:x.endswith("x"),movie_people)))
    print(list(filter(lambda y:not y.startswith("nana"),movie_people)))

    四、reduce函数

       1、函数特征:处理一个序列,然后把序列进行合并操作,合并压缩得出一个最终的值

       2、从functools模块中导入reduce模块

       3、eg

    方式一:
    num=[9,2,3,45,100]
    def reduce_test(func,array):
        res=array.pop(0)
        for i in array:
            res=func(res,i)
        return res
    print(reduce_test(lambda x,y:x*y,num))
    
    方式二:
    from functools import reduce
    num=[9,2,3,45,100]
    print(reduce(lambda x,y:x*y,num))
    print(reduce(lambda x,y:x*y,num),2)  #1代表指定初始值
  • 相关阅读:
    错误解决Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: pers.zhb.domain.Student column: classno (should be mapped with insert="false" update="false")
    Hibernate(级联保存、级联删除)
    文件搜索命令——grep
    文件搜索命令(命令搜索)which、whereis
    文件搜索命令locate
    批量查询:原生sql查询(查询所有、条件查询、分页查询)
    批量查询Criteria(查询所有、条件、分页、统计(聚合函数)、排序、Criteria 和与DetachedCriteria)
    批量查询HQL(查询所有、条件查询、占位符、分页、排序、统计、投影)
    Hibernate的事务(封锁、隔离级别、事务处理)
    Hibernate(一级缓存、快照)
  • 原文地址:https://www.cnblogs.com/xucuiqing/p/11638273.html
Copyright © 2011-2022 走看看