zoukankan      html  css  js  c++  java
  • 16.高阶函数

    00.匿名函数

    f = lambda x,y,z:x+y+z
    def F(x,y,z):
        return x+y+z
    
    f = lambda x:x if x % 2 != 0 else x + 100
    print(f(10))                    # 110

    三元运算

    name = 'Tom' if 1 == 1 else 'fly'
    print(name)
    # 运行结果: Tom

    01.filter

    1、filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤。
    2、最终一次性返回过滤后的结果。
    3、filter()函数有两个参数:
      1、第一个,自定函数名,必须的
      2、第二个,需要过滤的列,也是必须的
    4、利用 filter、lambda表达式 获取l1中元素小于33的所有元素 l1 = [11, 22, 33, 44, 55]
    l1= [11,22,33,44,55]
    a = filter(lambda x: x<33, l1)
    print(list(a))
    
    
    # -*- coding:utf8 -*-
    def F(x):
        if x<33:
            return x
    b = filter(F,l1)
    print(list(b))111
    
    
    # 输入 '102304'  ==> ['1', '2', '3', '4']
    l1= '102304'
    a = filter(lambda x: x !='0', l1)
    print(list(a))

    02.map

    1、第一个参数接收一个函数名,第二个参数接收一个可迭代对象
    2、利用map,lambda表达式将所有偶数元素加100
    # -*- coding:utf8 -*-
    l1= [11,22,33,44,55]
    ret = map(lambda x:x-100 if x % 2 != 0 else x + 100,l1)
    print(list(ret))
    # 运行结果: [-89, 122, -67, 144, -45]
    
    # lambda x:x-100 if x % 2 != 0 else x + 100
    # 如果 "if x % 2 != 0" 条件成立返回 x-100
    # 不成立:返回 x+100
    def F(x):
        if x%2 != 0:
            return x-100
        else:
            return x+100
    ret = map(F,l1)
    print(list(ret))

    03.reduce

    字符串反转
    # -*- coding:utf8 -*-
    '''使用reduce将字符串反转'''
    s = 'Hello World'
    from functools import reduce
    
    result = reduce(lambda x,y:y+x,s)
    # # 1、第一次:x=H,y=e  => y+x = eH
    # # 2、第二次:x=l,y=eH  => y+x = leH
    # # 3、第三次:x=l,y=leH  => y+x = lleH
    print( result )      # dlroW olleH

    04.sorted

    经典面试题只 列表排序
    
    
    students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    # [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
    print( sorted(students, key=lambda s: s[2], reverse=False) )    # 按年龄排序
    # 结果:[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
    
    def f(x):
        # ('john', 'A', 15)
        return x[2]
    print( sorted(students, key=f, reverse=False) )    # 按年龄排序
    对字典的value排序
    
    
    d = {'k1':1, 'k3': 3, 'k2':2}
    # d.items() = [('k1', 1), ('k3', 3), ('k2', 2)]
    a = sorted(d.items(), key=lambda x: x[1])
    print(a)            # [('k1', 1), ('k2', 2), ('k3', 3)]
    两个列表编一个字典
    
    
    L1 = ['k1','k2','k3']
    L2 = ['v1','v2','v3']
    print( list(zip(L1,L2)))
    # zip(L1,L2) : [('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]
    # dict( [('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')] )  = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
  • 相关阅读:
    Java 集合 — ArrayList
    Java 线程 — ScheduledThreadPoolExecutor
    Java 线程 — ThreadPoolExecutor
    Java 线程 — ThreadLocal
    Java 线程 — ConcurrentLinkedQueue
    Java 线程 — ConcurrentHashMap
    Java 线程 — AbstractQueuedSynchronizer
    Java 线程 — JMM Java内存模型
    Java 线程 — synchronized、volatile、锁
    spring源码 — 三、AOP代理生成
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14586624.html
Copyright © 2011-2022 走看看