zoukankan      html  css  js  c++  java
  • Python函数-内置函数、匿名函数

    一、内置函数   

       前面我们已经学过了内置函数(python自带的):
    int()、str()、list()、set()、dict()、tuple()、bool()、type()、len()、input()、print()
       今儿个学习一些新滴,先来一些不常用的,简单记一下:
    print(all([1, 2, 3, 4]))  # 判断可迭代的对象里面的值是否都为真
    print(all(['1', '2', '3', 0]))  # 有一个为假,即为False
    print(any([0, '', False]))  # 判断可迭代的对象里面的值是否有一个为真,则为真
    print(bin(10))  # 十进制转二进制
    print(chr(33))  # 打印数字对应的ascii
    print(ord('b'))  # 打印字符串对应的ascii码
    print(hex(111))  # 数字转成16进制
    print(oct(111))  # 把数字转换成8进制
    print(max([1, 5, 9, 111, 324]))  # 取最大值
    print(sum([1, 5, 9, 111, 324]))  # 求和
    print(divmod(10, 3))  # 取余
    print(round(11.11111, 2))  # 取几位小数
      再来一些比较常用的
    #dir讲解
    f = open('a.txt', 'w')
    print(dir(f))  # dir打印传入对象的可调用方法
    s = ''
    print(dir(s))
    
    # 局部变量 locals
    def func():
        name = 'abc'
        age = 18
        # {'name':'abc','age':18}
        print(locals())  # 返回函数里面的局部变量
    func()
    
    #全局变量 globals
    name = '123'
    print(globals())  # 返回程序内所有的变量,返回的是一个字典
    
    #zip()讲解  把两个list和成一个二维数组
    l = ['u1', 'u2', 'u3', 'u4']  # 多写元素也没问题
    l2 = ['p1', 'p2', 'p3']
    print(list(zip(l, l2)))  # 得转成list,两个list合成一个二维数组
    print(dict(zip(l, l2)))  # 字典

       下面我们康康比较重要的:

    1、sorted()讲解
       注:sorted字符串、元组、集合、字典都可以排序
    (1)list排序
    # sorted()讲解
    print(sorted([2, 31, 34, 6, 1, 23, 4]))  # 可这样排序
    # 也可这样
    l = [1, 2, 635, 63, 62, 325, 2352, 6, 2632]
    l.sort() #list里面得方法,对原来得l进行排序,改变了位置而已
    print(l)
    print(sorted(l, reverse=True))  # reverse=True按降序排,sorted用来排序,返回一个新的list,l不会变

    运行结果:

    [1, 2, 4, 6, 23, 31, 34]
    [1, 2, 6, 62, 63, 325, 635, 2352, 2632]
    [2632, 2352, 635, 325, 63, 62, 6, 2, 1]

    (2)二维数组排序

    # 二维数组进行排序
    l = [
        ['小名', 5], ['xiaohei', 19],
        ['xiaobai', 20], ['xiaolan', 10]
    ]
    l1 = sorted(l, reverse=True, key=lambda x: x[-1])  # key的作用是传一个函数名
    print(l1)
    
    # 也可定义一个函数,让sorted来调用
    def use_key(x):
        return x[1]
    l2 = sorted(l, reverse=True, key=use_key)  # 让sorted来调用use_key
    print(l2)

    运行结果:

    [['xiaobai', 20], ['xiaohei', 19], ['xiaolan', 10], ['小名', 5]]
    [['xiaobai', 20], ['xiaohei', 19], ['xiaolan', 10], ['小名', 5]]

    (3)字典排序

    # 字典排序
    d = {'a': 1, 'b': 2}
    print(d)
    l1 = sorted({'a': 1, 'b': 2}, reverse=True)  # 直接传一字典,是对字典得key进行排序
    print(l1)
    l2 = sorted(d.items(), reverse=True, key=lambda x: x[0])  # 通过key来排序
    print(l2)
    l3 = sorted(d.items(), reverse=True, key=lambda x: x[1])  # 通过value来排序
    print(l3)

    运行结果:

    {'a': 1, 'b': 2}
    ['b', 'a']
    [('b', 2), ('a', 1)]
    [('b', 2), ('a', 1)]

    (4)三维数组排序

    # 三维数组进行排序
    l = [
        ('小名', 5, ['xx', 11]),
        ['xiaohei', 19, ['xx', 13]],
        ['xiaobai', 20, ['xx', 18]],
        ['xiaolan', 10, ['xx', 20]]
    ]
    l4 = sorted(l, reverse=True, key=lambda x: x[-1][-1])
    print(l4)

    运行结果:

    [['xiaolan', 10, ['xx', 20]], ['xiaobai', 20, ['xx', 18]], ['xiaohei', 19, ['xx', 13]], ('小名', 5, ['xx', 11])]

    2、filter()讲解

    
    
    # filter()讲解
    def filter_test(x):
        return x > 5
    result = filter(filter_test, [12, 3, 12, 2, 1, 2, 35])
    print(list(result))
    # 这俩等同
    result = filter(lambda x: x > 5, [12, 3, 12, 2, 1, 2, 35]) # 把后面的迭代对象根据前面的方法筛选
    print(list(result))

    运行结果:

    [12, 12, 35]
    [12, 12, 35]

    3、map()讲解

    # map()讲解
    result = map(lambda x: x > 5, [12, 3, 12, 2, 1, 2, 35])
    print(list(result))
    
    l = [12, 3, 12, 2, 1, 2, 35]
    # map方式实现
    result = map(lambda x: str(x).strip().zfill(3), l)
    print(list(result))
    
    # 最传统的方式
    l2 = []
    for i in l:
        new_i = str(i).strip().zfill(3)
        l2.append(new_i)
    print(l2)
    
    #列表生成式方式
    l3 = [str(i).strip().zfill(3) for i in l]
    print(l3)

    运行结果:

    [True, False, True, False, False, False, True]
    ['012', '003', '012', '002', '001', '002', '035']
    ['012', '003', '012', '002', '001', '002', '035']
    ['012', '003', '012', '002', '001', '002', '035']

    4、enumerate()讲解

    # enumerate()讲解
    l = [12, 3, 12, 2, 1, 35]
    index = 0
    for i in l:
        print('%s -> %s' % (index, i))
        index += 1
    # 俩等同
    print('--------')
    
    for index, i in enumerate(l):  # 生成一个二位数组
        print('%s -> %s' % (index, i))

    运行结果:

    0 -> 12
    1 -> 3
    2 -> 12
    3 -> 2
    4 -> 1
    5 -> 35
    --------
    0 -> 12
    1 -> 3
    2 -> 12
    3 -> 2
    4 -> 1
    5 -> 35

    举个小例子:

    l = ['购物', '注册', '充值', '积分查询']
    for index, i in enumerate(l, 1):  # 指定从1开始
        print('%s -> %s' % (index, i))
    print('请输入你的选择:')

    运行结果:

    1 -> 购物
    2 -> 注册
    3 -> 充值
    4 -> 积分查询
    请输入你的选择:

    5、exec讲解百度搜--网络在线编程python

    # exec 讲解
    print(exec('def a():pass'))  # 执行python代码
    
    str_code = '''
    # import os
    l = [12, 3, 12, 2, 1, 2, 35]
    print([str(i).strip().zfill(3) for i in l])
    '''
    exec(str_code)
    # if 'import os' in str_code:
    #     print('os模块不能用')

    运行结果:

    None
    ['012', '003', '012', '002', '001', '002', '035']

    6、eval讲解

    # eval 讲解
    print(eval('[]'))  # 执行python代码,只能执行简单的,定义数据类型和运算
    
    result = eval('{"code":1,"name":"xiaohei"}')  # 执行python代码,只能执行简单的,定义数据类型和运算
    print(result)

    运行结果:

    []
    {'code': 1, 'name': 'xiaohei'}

    二、匿名函数

    •  如果这个函数只执行一次的话,那就可以定义一个匿名函数。
    •  匿名函数只能处理比较简单的处理逻辑,只能写简单的表达式,不能写循环判断,比如三元运算符。
    •  匿名函数定义使用lambda关键字,比如说要定义一个函数,它的功能是返回两个数相加和,就可以使用lambda。

      代码如下:

  • 相关阅读:
    antd按需加载
    解决vscode开发react项目没有代码提示问题
    在react中配置less
    flutter之fluro导航传参数
    Flutter游戏:简单规则与结束页
    zsh: command not found:XXX
    React的安装与使用
    git stash 用法总结和注意点
    【OSS】工具类
    ajax将数组或list集合传到后台 的 【坑】
  • 原文地址:https://www.cnblogs.com/ccxm/p/12853521.html
Copyright © 2011-2022 走看看