zoukankan      html  css  js  c++  java
  • python中的内置函数(一), lambda, filter, map

    内置函数图

    https://www.processon.com/view/link/5c10da0ce4b099ae3e137bf6

    1.内置函数

     

      内置函数就是python中提供的,可以直接拿来用的函数,比如print,input这样的.到python3.6.2版本时,python一共提供了68个内置函数

    作用域相关:

        locals() 返回当前作用域中的名字
        globals() 返回全局作用域中的名字

    迭代器相关:

    range()  生成数据
    
    next()    迭代器向下执行一次,内部实际使用了__next__()方法返回迭代器的下一个项目
    
    iter()      获取迭代器,内部实际使用的是__iter__()方法来获取迭代器

    字符串类型代码的执行

    eval()  执行字符串类型的代码,并返回最终结果

    print(eval('2+2'))  # 4
    n = 8
    print(eval('2+n'))  # 10
     
    def func():
         print(666)
    eval('func()')  # 666 

     exec()  执行字符串类型的代码

    exec("""
    for i in range(10):
            print(i)
    """)
    
    exec("""
    def func():
        print("我是周杰伦")
    func()
    """)   

    compile() 将字符串类型的代码变异.代码对象能够通过exec语句来执行或者eval()进行求值

    '''
    参数说明:
    1. resource 要执⾏行行的代码, 动态代码⽚片段
    2. ⽂文件名, 代码存放的⽂文件名, 当传⼊入了了第⼀一个参数的时候, 这个参数给空就可以了了
    3. 模式, 取值有3个,
    1. exec: ⼀一般放⼀一些流程语句句的时候
    2. eval: resource只存放⼀一个求值表达式.
    3. single: resource存放的代码有交互的时候. mode应为single
    '''
    
    code1 = 'for i in range(10): print(i)'
    c1 = compile(code1,"",mode='exec')
    exec(c1)
    
    code2 = '1+2+3'
    c2 = compile(code2,"",mode='eval')
    a = eval(c2)
    print(a)
    
    code3 = 'name = input('请输入你的名字:')'
    c3 = compile(code3,"",mode = 'single')
    exec(c3)
    print(name)

    有返回值的字符串形式的代码用eval().没有返回值的字符串形式的代码用exec().一般很少用到compile()

       输入和输出相关:   

    input() 获取用户输入的内容
    print() 打印输出

      内存相关:

    hash() 获取到对象的哈希值(int,str,bool,tuple)
    id()  获取到对象的内存地址

      文件操作相关:

    open()用于口打开一个文件,创建一个文件句柄

      模块相关:

    __import__() 用于动态加载类和函数

      帮助:

    help() 函数用于查看函数或模块用途的详细说明

      调用相关:    

    callable() 用于检查一个对象是否是可调用的,如果返回True,objuect有可能调用失败,但如果返回False,那调用绝对不会成功

      查看内置属性:

    dir()  查看对象的内置属性,方法,访问的对象中的__dir__()方法

      基础数据类型相关:

     数字相关:
    bool() 将给顶的数据转换成bool值,如果不给值.返回False
    int()  将给定的数据转换成int 值,如果不给治,返回0
    float() 将给定的数据转换成float值,也就是小数
    complex() 创建一个复数,第一个参数为实部,第二个参数为虚部.或者第一个参数直接用字符串来描述复数

      进制转换:

    bin()    将给的参数转换成二进制
    otc()    将给的参数转换成八进制
    hex()  将给的参数转换成十六进制

    2.匿名函数

       lamda匿名函数

      为了解决一些简单的需求而设计的一句话函数

    # 计算n的n次方
    def func(n)
        return n**n
    print(func(10))
    
    f = lambda n:n**n
    print(f(10))

     

       lambda表示的是匿名函数,不需要用def来声明,一句话就可以声明出一个函数

    语法:
        函数名 = lanmbda 参数:返回值

      注意:

        1.函数的参数可以有多个.多个参数之间用逗号隔开

        2.匿名参数不管多复杂.只能写一行,且逻辑结束后直接返回数据

        3.返回值和正常的函数一样,可以是任意数据类型

      匿名函数并不是说一定没有名字.这里前面的变量就是一个函数名.说他是匿名原因是我们通过__name__查看的时候是没有名字的

      统一都叫lambda.在调用的时候没有什么特别之处,像正常的函数调用即可

    sorted()

      排序函数. 

     语法:sorted(ITerable,key=None,reverse=False)
    
        Iterable:可迭代对象
    
        key:排序规则(排序函数),在sorted内部会将可第二代对象中的每一个元素传递给这个函数的参数.根据函数运算的结果进行排序
      
        reverse:是否倒序.True:倒叙,False:正序

     

     和函数组合使用

    # 根据字符串⻓度进行排序
    lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]
    
    # 计算字符串串⻓长度
    def func(s):
        return len(s)
    
    print(sorted(lst, key=func))

     

    和lambda组合使用

    # 根据字符串长度进行排序
    lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]
        # 计算字符串长度
    def func(s):
        return len(s)
    
    print(sorted(lst, key=lambda s: len(s)))
    
    lst = [{"id":1, "name":'alex', "age":18},
        {"id":2, "name":'wusir', "age":16},
        {"id":3, "name":'taibai', "age":17}]
    
    # 按照年年龄对学⽣生信息进⾏行行排序
    print(sorted(lst, key=lambda e: e['age']))

     

    filter()

    筛选函数

    语法:filter(function,Iterable)
       function:用来筛选的函数.在filer中会自动的把iterable中的元素传递给function.然后根据function返回的True或者False来判断是否保留此项数据
        Iterable:可迭代对象
    lst = [1,2,3,4,5,6,7]
    ll = filter(lambda x: x%2==0, lst) # 筛选所有的偶数
    print(ll)
    print(list(ll))
    
    lst = [{"id":1, "name":'alex', "age":18},
    {"id":2, "name":'wusir', "age":16},
    {"id":3, "name":'taibai', "age":17}]
    
    fl = filter(lambda e: e['age'] > 16, lst) # 筛选年年龄⼤大于16的数据
    print(list(fl))

     

    map()

    映射函数

    语法:
        map(function,iterable)可以对可迭代对象中的每一个元素进行映射.分别取执行function
        计算列表中每个元素的平方,返回新列表
    
    def func(e):
        return e*e
    
    mp = map(func,[1,2,3,4,5])
    print(mp)
    print(list(mp))
    
    改写成lambda
    print(list(map(lambda x: x*x,[1,2,3,4,5])))

     

    计算两个列表中相同位置的数据的和

    # 计算两个列表相同位置的数据的和
    lst1 = [1, 2, 3, 4, 5]
    lst2 = [2, 4, 6, 8, 10]
    print(list(map(lambda x, y: x+y, lst1, lst2)))

     

  • 相关阅读:
    常用Dos 命令
    Expect: 100continue
    Sql Server 文件和文件组体系结构
    Build Action
    regasm.exe 程序集注册工具
    获得user account的SID,GUID
    sp_change_users_login
    Regsvr32
    ASP.NET IIS 注册工具 (Aspnet_regiis.exe)
    随机生成300道四则运算
  • 原文地址:https://www.cnblogs.com/robertx/p/10108861.html
Copyright © 2011-2022 走看看