• python基础知识--10Lambda匿名函数、三元表达式及map、reduce、filter


    1.Lambda匿名函数


    # 匿名函数

    # 匿名函数,没有定义函数的名称,可以实现函数某些简单功能

    # 需求
    # 传入 x,y
    # 返回 x + y 的值

    #%%

    def add(x,y):
    a = x + y
    return a


    lambda param_list:expression

    # param_list,参数列表
    # expression,建议书写一些简单的表达式,没法完整实现复杂代码块内容

    #%%

    f = lambda x,y:x+y

    f(3,4)

    运行结果:7

    f = lambda x,y:x+y

    # 需求:
    # 传入两个参数x,y,如果 x>=y 返回 x+y。
    # 如果x < y,返回 x -y

    #%%

    def f(x,y):
    if x>=y:
    return x+y
    return x-y

    f = lambda x,y: x+y if x>=y else x-y # 三元表达式 高阶函数

    f(5,4)
    运行结果:9

    2.三元表达式

    # 三元表达式格式
    # 条件为真的结果 if 条件判断 else 条件为假的结果

    #%%

    f = lambda x,y: x+y if x>=y else x-y

    #%%

    f(5,4)
    运行结果:9

    # 需求
    # 输入一个单词
    # 如果是小写单词,则返回小写单词,否则都返回大写单词


    #%%

    # 三元表达式格式
    # 条件为真的结果 if 条件判断 else 条件为假的结果

    #%%

    f = lambda x: x if x.islower() else x.upper()

    f('Hello')
    运行结果:
    'HELLO'
    3.MAP
    a = [1,2,3,4,5]

    # 需求:
    # 生成一个列表b,列表b内的元素为a列表每个元素的三次方

    b = []

    for i in a:
    b.append(i ** 3)


    b
    运行结果:
    [1, 8, 27, 64, 125]
    #%%

    map(func, *iterables)

    # func 代表可接收一个函数
    # iterables 代表可接收一个或多个可迭代的序列

    #%%

    a = [1,2,3,4,5]

    # 需求:
    # 生成一个列表,列表内的元素为a列表每个元素的三次方

    def f(x):
    return x ** 3

    b = map(f,a)

    list(b)
    运行结果:
    [1, 8, 27, 64, 125]

    b = map(lambda x:x**3,a)

    list(b)
    运行结果:
    [1, 8, 27, 64, 125]

    #%%

    # 将两个列表元素相加之后结果,存放在一个新列表c中

    #%%

    a = [1,2,3,4,5]

    b = [1,2]

    c = map(lambda x,y:x+y,a,b)

    list(c)

    4.Reduce
    a = [1,2,3,4,5]

    # 需求
    # 计算a列表各元素相乘之后的值

    #%%

    num = 1

    for i in a:
    num *= i

    num
    运行结果:120
    #%%

    from functools import reduce

    reduce(function, sequence[, initial])

    #%%

    # function 接收一个函数
    # sequence 接收一个可迭代序列
    # initial 初始运算的值

    #%%

    # 连续计算
    # 计算a列表各元素相乘之后的值

    #%%

    a = [1,2,3,4,5]

    num = reduce(lambda x,y:x*y,a,1000) # 1000 * 1 * 2 * 3 * 4 *5

    num
    运行结果:
    120000
    #%%

    b = ['a','b','c']

    r = reduce(lambda x,y:x+y,b,'???') # ???abc

    r
    运行结果:
    '???abc'
    5.Filter
    a = [0,1,2,3,4,5]

    #%%

    # 将a列表中非0的元素,保存到b列表中

    #%%

    b = []

    for i in a:
    if i !=0:
    b.append(i)

    #%%

    b
    [1, 2, 3, 4, 5]

    # 用于元素过滤

    filter(function, iterable)

    # function 接收一个函数
    # iterable 接收一个可迭代序列

    # 适用场景
    # 用于序列元素过滤

    # 需求:
    # 将a列表中非0的元素,保存到b列表中

    #%%

    a = [0,1,2,3,4,5]

    def f(x):
    if x !=0:
    return x

    b = filter(f,a)


    list(b)
    [1, 2, 3, 4, 5]

    #%%

    c = filter(lambda x:True if x!=0 else False,a)

    c

    <filter at 0x10d9d10b8>


    list(c)


    [1, 2, 3, 4, 5]

    #%%

    # filter 返回结果必须是 True 或者 False

    #%%

    bool(1)
    True

    #%%

    bool(0)
    False

    #%%

    c = filter(lambda x:x,a)

    list(c)

    [1, 2, 3, 4, 5]

    6.列表推导式
    # 如何快速生成一个 0-9 列表

    #%%

    a = []
    for i in range(10):
    a.append(i)

    #%%

    a
    运行结果:
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    # 基本格式

    variable = [i for i in input_list if 条件判断]

    # variable 列表名,可自定义
    # i 循环变量名
    # input_list 可迭代序列
    # if 条件判断,如果不写的话,默认所有条件都成立

    # 如何快速生成一个 0-9 列表

    #%%

    a = [i for i in range(10) if i>3]

    a
    运行结果:
    [4, 5, 6, 7, 8, 9]
    # 需求
    # 生成一个列表,列表内的元素为a列表每个元素的三次方

    #%%

    a = [1,2,3,4,5]

    # map lambda

    b = map(lambda x:x**3,a)

    list(b)
    运行结果:
    [1, 8, 27, 64, 125]
    c = [i**3 for i in a]

    c

    运行结果:
    [1, 8, 27, 64, 125]
    # 需求
    # 将字典里面的键,保存到一个列表c中

    #%%

    d = {'lemon':5,"apple":3,"pear":4}

    c = [i for i in d.keys()]

    c

    ['lemon', 'apple', 'pear']


    # 扩展
    # 将字典里的键与值,进行替换


    e = {value:key for key,value in d.items()}

    e
    运行结果:
    {5: 'lemon', 3: 'apple', 4: 'pear'}
    
    
  • 相关阅读:
    Kubernetes(十一) 部署doshboard
    kubernetes(一)kubeadm安装
    kubernetes安装-二进制
    使用Jmeter+Maven+Jenkins实现接口自动化测试
    使用Jmeter在linux环境实现分布式负载
    Jmeter连接Mysql和Oracle数据库
    Jmeter如何实现参数化用户,并且管理Cookie
    开启MYSQL慢查询日志,监控有效率问题的SQL
    使用jmeter+ant+jenkins实现接口自动化测试
    使用Jmeter对SHA1加密接口进行性能测试
  • 原文地址:https://www.cnblogs.com/tester007/p/13866748.html
Copyright © 2020-2023  润新知