zoukankan      html  css  js  c++  java
  • 022_Python3 lambda函数高级用法

    # -*- coding: UTF-8 -*-
    
    # 1.1 简单用法 求和
    num = lambda x, y, z: x + y + z
    print(num(2, 3, 4))  # 9
    
    
    # 1.2 作为函数返回
    def action(x):
        return lambda y: x + y
    
    
    # 这里定义了一个action函数,返回了一个lambda表达式。其中lambda表达式获取到了上层def作用域的变量名x的值。
    # a是action函数的返回值,a(22),即是调用了action返回的lambda表达式。
    a = action(2)
    print(a(22))  # 24
    
    # 1.3 多参数
    f = lambda x, *args, para, **kwargs: [args, para, kwargs]
    print(f(1, 2, 3, para='number', name='Jack', sex='male'))  # [(2, 3), 'number', {'name': 'Jack', 'sex': 'male'}]
    
    # 1.4 与 map
    lst = [1, 2, 3, 4, 5]
    print(list(map(lambda x: x * x, lst)))  # [1, 4, 9, 16, 25]
    
    # 1.5 与 filter、reduce
    from functools import reduce
    
    lst = [1, 2, 3, 4, 5]
    f_res = filter(lambda x: x > 3, lst)
    r_res = reduce(lambda x, y: x * y, lst)
    
    print('大于3的数字有:', list(f_res))  # 大于3的数字有: [4, 5]
    print('累乘结果为:', r_res)  # 累乘结果为: 120
    
    # 1.6 与 if 判断
    f = lambda x: 'even' if x % 2 == 0 else 'odd'
    print(f(3))  # odd
    
    # 1.7 与 sorted    sorted(iterable, key=None, reverse=False)
    L = [{'a': 1, 'b': 4}, {'a': 1111, 'b': 2}, {'a': 1111, 'b': 3}]
    L_sorted = sorted(L, key=lambda d: d['b'], reverse=False)
    print(L_sorted)  # [{'a': 1111, 'b': 2}, {'a': 1111, 'b': 3}, {'a': 1, 'b': 4}]
    
    d = {'a': 25, 'c': 27, 'b': 20, 'd': 22}
    L_sorted = sorted(d.items(), key=lambda x: x[0])
    print(L_sorted)  # [('a', 25), ('b', 20), ('c', 27), ('d', 22)]
    
    d = {'a': 25, 'c': 27, 'b': 20, 'd': 22}
    L_sorted = sorted(d.items(), key=lambda x: x[1])
    print(L_sorted)  # [('b', 20), ('d', 22), ('a', 25), ('c', 27)]
    
    # 反转字符串排序,'moT', 'yrreJ', 'ekipS', 'ekyT'
    r_list = sorted(['Tom', 'Jerry', 'Spike', 'Tyke'], key=lambda x: x[::-1])
    print(r_list)  # ['Spike', 'Tyke', 'Tom', 'Jerry']
  • 相关阅读:
    牛客网 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-低年级组)求最大值
    HDU 5024 Wang Xifeng's Little Plot(DFS)
    java正则表达式
    48.自用qss
    47.使用帧缓存对象生成叠加
    46.Qt 使用OpenGL绘制立方体
    45.Qt openGL实现三维绘图
    44.Qt通过子类化qstyle实现自定义外观
    43.qt通过qss自定义外观
    42.写入XML
  • 原文地址:https://www.cnblogs.com/luwei0915/p/14606717.html
Copyright © 2011-2022 走看看