zoukankan      html  css  js  c++  java
  • day 13 内置函数

    内置函数思维导图:https://www.processon.com/view/link/5c13ad2de4b0ed122da75668

    内置函数
    作用域相关:   locals() 返回当前作用域中的名字   globals()  返回全局作用域中的名字
    迭代器相关:   range()  生成数据     next() 迭代器向下执行一次,内部实际使用__next__()方法返回迭代器的下一个项目         iter()   获取迭代器,内部实际使用的是__iter__() 方法来获取迭代器
    lst = ['今天星期三', "明天星期四", "马上星期五"]
     
    it = lst.__iter__()
    print(it.__next__())
    print(it.__next__())
    print(it.__next__())
     
    it = iter(lst)  # it = lst.__iter__()
    print(next(it)) # it.__next__()
    print(next(it))
    print(next(it))
    字符串类型代码的执行
    eval()  执行字符串类型的代码,并返回最终结果
    print(eval("2+2")) # 4
    n = 8 
    print(eval("2+n")) # 10 
    #eval 是把字符串类型的数据作为代码进行执行
    s = "18+2"
    ret = eval(s) # 执行字符串类型的代码
    print(ret)
    exec() 执行字符串类型的代码
    s = "{'name':'alex', 'age':18, 'isMan':False}" # 字符串
    # 把字符串类型的代码还原回字典, 列表, 元组
    ret = eval(s)  # 侧重的有返回值
    print(ret)
    print(type(ret))
    compile() 将字符串类型的代码编译.代码队形能够通过exec语句来执行或者eval()进行求值
    code = '''
    for i in range(10):
        if i % 2 == 0:
            print(i)
    '''
     
     
    c = compile(code, "", "exec") # 预加载代码
    # exec
    exec(c) # 运行代码
    匿名函数    lambda
    匿名函数统一的名字就是 lambda
    fn = lambda a, b : a + b # 定义一个很简单的函数. 复杂的函数不要用lambda
    ret = fn(3, 5)
    print(ret)
    print(func)
    print(fn)
     
    使用场景: 配合着sorted, map, filter 一起使用
    sorted   排序函数. 请你自己去定义排序的规则
    sorted 排序函数.  让你自己去定义排序的规则
     
    lst = [11,5,36,1,27,58]
     
    s = sorted(lst) # 默认从小到大排序.
    print(s)
    lst = ["胡一菲", "张伟", "关谷神奇", "曾小贤吕小布", "诺澜"]
    # 按照字符串长度排序
    def func(s):
        return len(s) # 返回长度
     
    # 执行流程:
    # 把可迭代对象中的每一项拿出来, 作为参数传递给后面key函数.
    # 函数返回数字. 根据数字进行排序
    s = sorted(lst, key=func)
    print(s)
     
    print(sorted(lst, key=lambda s:len(s) ))
     
     
    lst = [
        {"name":"alex", "shengao":150, "tizhong":250},
        {"name":"wusir", "shengao":158, "tizhong":150},
        {"name":"taibai", "shengao":177, "tizhong":130},
        {"name":"ritian", "shengao":165, "tizhong":130},
        {"name":"nvshen", "shengao":160, "tizhong":120},
        {"name":"baolang", "shengao":183, "tizhong":190}
    ]
     
    # 按照体重进行排序
    print(sorted(lst, key=lambda dic:dic['tizhong'],  reverse=True))
    map   映射函数
    map()  映射函数
    lst = ["篮球球", "打打台球", "唱歌", "爬慌山", "步"]
     
    m = map(lambda s: "爱好:"+s , lst)
     
    print(list(m))
     
    lst = [1,5,78,12,16] # 计算每个数字的平方
    print([i **2 for i in lst])
     
    m = map(lambda i: i ** 2, lst)
    print(list(m))
    filter   过滤
     
    lst = ["张无忌", "张翠山", "范冰冰", "金毛狮王", "李冰冰"]
     
    # 过滤掉姓张的人
    # 把可迭代对象打开. 把内部元素一个一个的传递给前面的函数. 由这个函数决定此项是否保留
    f = filter(lambda name : not name.startswith("张"), lst)
     
    print("__iter__" in dir(f)) # 可迭代对象
    for el in f:
        print(el)
    lst = [
        {"name":"alex", "shengao":150, "tizhong":250},
        {"name":"wusir", "shengao":158, "tizhong":150},
        {"name":"taibai", "shengao":177, "tizhong":130},
        {"name":"ritian", "shengao":165, "tizhong":130},
        {"name":"nvshen", "shengao":160, "tizhong":120},
        {"name":"baolang", "shengao":183, "tizhong":190}
    ]
     
    # 过滤掉体重大于180的人   想要的是 小于180
     
    f = filter(lambda d : d['tizhong'] <= 180, lst)
     
    print(list(f))
     
  • 相关阅读:
    我的算法日志:数据结构之顺序队列与循环队列
    我的算法日志:排序算法之快速排序
    算法:冒泡排序
    算法:桶排序(简易版)
    Android:配置LitePal 3.0
    Android:简单粗暴的二维码生成与扫描
    Linux
    Python
    Linux
    Python
  • 原文地址:https://www.cnblogs.com/yanghongtao/p/10110952.html
Copyright © 2011-2022 走看看