• day23 内置函数,匿名函数,递归


     Python之路,Day11 = Python基础11

    内置函数
    divmod(x, y)             # (商, 模)
    enumerate(可迭代对象)          # (序号,值)
    eval(字符串)            # 把字符串当成命令执行
    set({1,2,3})              # 可变集合(增删改)
    frozenset({1,2,3})              # 不可变集合
    globals()               # 查看全局变量
    locals()               # 查看局部变量
    isinstance(3, int)             # 查看3是不是int类型
    pow(3,3)                 # 3**3
    pow(3,3,2)             # 3**3 % 2
    reversed()              # 翻转
    round(3.3456, 3)          # 保留3位小数后四舍五入

    x = slice(2,5,2)         # 获得一个切片对象
    l[x]
    上面两句等同于: l[2:5:2], 但上面定义的 x 可以提供给好多个列表使用

    zip():拉链函数
      s = 'hello'
      l = [1,2,3,4,5,6]
      zip(s,l)
      一 一对应,多的就不要了

    map:映射,每个元素执行lambda表达式结果
    l=[1,2,3,4]
    m = map(lambda x:x**2, l)
    生成一个迭代器,循环后结果
    print(list(m))
    >>[1,4,9,16]

    reduce:合并
    from functools import reduce
    reduce(合并规则(func),可迭代对象range(100),初始值)

    filter
    filter(lambda, 列表) # 打印返回结果为True的值

    sorted:排序,没有改变原来的顺序
    sorted(list)
    sorted(list, reverse=True)


    匿名函数
      func2 = lambda x:x**2 # 默认return
      print( func2(2) )

    等同于:
    def func(x):
      return x**2
    print( func1(2) )


    递归

    1.直接或间接调用自己

    2.有停止的条件

    3.规模应该每次变小

     =========================================================

    1 文件内容如下,标题为:姓名,性别,年纪,薪资

    egon male 18 3000
    alex male 38 30000
    wupeiqi female 28 20000
    yuanhao female 28 10000

    要求:
    从文件中取出每一条记录放入列表中,
    列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式

    2 根据1得到的列表,取出薪资最高的人的信息
    3 根据1到的列表,取出最年轻的人的信息
    4 根据1得到的列表,将每个人的信息中的名字映射成首字母大写的形式
    5 根据1得到的列表,过滤掉名字以a开头的人的信息
     1 info_list = [{'name':i.split()[0],'sex':i.split()[1], 'age':i.split()[2], 'salary':i.split()[3]} for i in open('info',encoding='utf-8')]
     2 
     3 
     4 print(max(info_list,key=lambda x:x['salary']))     # 最大值
     5 print(min(info_list,key=lambda x:x['age']))        # 最小值
     6 
     7 def func1(x):
     8     x['name'] = x['name'].capitalize()
     9     return x
    10 
    11 # print(list(map(lambda x:x['name'].capitalize(), info_list)))
    12 print(list(map(func1, info_list)))
    13 
    14 # 首字母大写,目测有点问题,等会儿解决下
    15 
    16 
    17 print(list(filter(lambda x:not x['name'].startswith('a'), info_list)))
    # 6 使用递归打印j(前两个数的和得到第三个数)
    # 0 1 1 2 3 5 8...
    def nbqe(a=0, b=1):
        if a < 50000:
            print(a, end=' ')
            c = a + b
            nbqe(b, c)
    
    nbqe()
    
    # =====================================
    l = [0, ]
    def fbnq(a=0, b=1):
        l[0] = a
        return b,a+b
    
    a = 0
    b = 1
    total = 100000
    for i in range(total):
        a, b = fbnq(a, b)
    
    print('第%s个值为:%s'%(total, l[-1]))===




  • 相关阅读:
    Quartus II -----破解
    博客诞生
    OpenMPI 学习笔记(一)并行计算机和分布式计算
    信息安全(1):安全策略
    认证
    SSL/TLS 和Https
    IPSec 网络协议安全
    C# 快速高效率复制对象另一种方式 表达式树
    C语言学习指针和数组2
    C语言学习二维数组
  • 原文地址:https://www.cnblogs.com/alwaysInMe/p/7054479.html
Copyright © 2020-2023  润新知