• Python函数之lambda,内置函数,yield生成器等


    lambda

    1,用于处理简单逻辑

    2,自动返回数据(return)

    单参数

    >>> func2 = lambda a: a+1
    >>> result = func2(1000)
    >>> print result
    1001

    多参数

    >>> func3 = lambda a,b: a+b
    >>> result = func3(1000,888)
    >>> result
    1888

    map

    我们先看map。map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

    >>> def f(x):
    ... return x*x
    ...
    >>> map(f,[1,2,3])
    [1, 4, 9]

    也可以传递两个列表

    >>> l1
    [11, 22, 33]
    >>> l2
    [11, 22, 33]

    >>> def func2(a1,a2):
    ... return a1 + a2
    ...
    >>> map (func2,l1,l2)
    [22, 44, 66]

    filter

    map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

    例如,在一个list中,删掉偶数,只保留奇数,可以这么写:

    >>> def is_odd(n):
    ...     return n % 2 == 1
    ... 
    >>> filter(is_odd,[1,2,4,5,6,9,10,15])
    [1, 5, 9, 15]
    

    reduce

    对于序列内的所有元素进行累计操作

    >>> li = [11,22,33]
    >>> result = reduce(lambda arg1,arg2:arg1 + arg2,li)
    >>> print result
    66
    

    yield

    用来记住上一次操作,下次再执行时继续执行

    函数内,ruturen,函数执行完毕 把return换成yield

    vim day4-6.py

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    def func1():
        return 1
    print func1()
    

    执行返回为1

    修改代码

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    def func1():
        yield 1
        yield 2
        yield 4
    print func1()
    

      返回为

    <generator object func1 at 0x7fc4b1ab0780>

    修改代码

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    def func1():
        yield 1
        yield 2
        yield 4
    for i in func1():
        print i
    

      返回为1 2 4

    使用了迭代返回

    使用yield模拟xrange功能

    vim day4-7.py 

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    def mrange(arg):
        seed = 0
        while seed <= arg-1:
            seed = seed + 1
            yield seed - 1
    
    for i in mrange(10):
        print i
    

    reduce的基数概念

    li=[1,2,3,4,5,6,7,8,9,10]
    >>> result = reduce(lambda arg1,arg2:arg1 + arg2,li )
    >>> print result
    55
    >>> result = reduce(lambda arg1,arg2:arg1 + arg2,li,1000 )
    >>> print result
    1055

    小结

    map 所有元素操作

    filter 过滤,获取指定元素计划

    reduce累积

    装饰器

    装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或者类,使用装饰器可以在函数执行前执行后添加相应操作

  • 相关阅读:
    JVM笔记
    数论之GCD
    a+b problem
    table 随着内容自动适应宽度
    jquery 去除 css 的 background-image 样式
    jquery.table2excel,将HTML的table标签数据导出成excel
    C# MVC 视图 计算某一个列的总和
    template.js 求和 问题
    JavaScript 数组去重
    c# 获取api 数据
  • 原文地址:https://www.cnblogs.com/minseo/p/6813521.html
Copyright © 2020-2023  润新知