小甲鱼《零基础学习Python》课后笔记(二十一)

测试题

0.请使用lambda表达式将下边函数转变为匿名函数?

    def fun_A(x, y = 3):  
        return x * y  

使用lanbda表达式:

    >>> f = lambda x, y = 3 : x * y  
    >>> f(3)  
    9  
    >>> f(3,4)  
    12  


1.请将下边的匿名函数转变为普通的屌丝函数?

    lambda x : x if x%2 else None 

转变后:

    def fun1(x):  
        if x%2:  
            return x  
        else:  
            return None 

编写了测试程序,测试通过:

    >>> def fun1(x):  
        if x%2:  
            return x  
        else:  
            return None  


    >>> f = lambda x : x if x%2 else None  
    >>> for each in range(20):  
        print(fun1(each), end = '\t')  


    None    1   None    3   None    5   None    7   None    9   None     11  None    13  None    15  None    17  None    19    

    >>> for each in range(20):  
        print(f(each), end = '\t')  


    None    1   None    3   None    5   None    7   None    9   None    11  None    13  None    15  None    17  None    19    


2.感受一下使用匿名函数后给你的编程生活带来的变化?

主要感觉就是不用为了取名字而费那么多脑子了;还可以使代码更加精简。

3.你可以使用filter()和lambda()表达式快速求出100以内所有3的倍数吗?

>>> list(filter(lambda x : x%3 == 0,range(100)))  
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]  


4.你还记得列表推导式吗?完全可以使用列表推导式代替filter()和lambda组合,你可以做到吗?

就以上题为例:

>>> list1 =[x for x in range(100) if x%3 == 0]  
>>> list1  
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]


5.还记得zip吗?使用zip会将两个数以元组的形式绑定在一起,例如:

>>> list(zip([1,3,5,7,9],[2,4,6,8,10]))  
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]  

但是如果我希望打包的形式是灵活多变的列表而不是元组(希望是[[1,2],[3,4],[5,6],[7,8],[9,10]]这种形式),你能做到吗?(采用map和lambda表达式)

>>> list(map(lambda x,y : [x,y],range(1,10,2),range(2,10,2)))  
[[1, 2], [3, 4], [5, 6], [7, 8]]  

map表达式可以接受多个序列作为参数。

6.请目测以下表达式会打印什么?

def make_repeat(n):  
    return lambda s : s * n  

double = make_repeat(2)  
print(double(8))  
print(double('FishC'))  

会打印

16
FishCFishC 

猜你喜欢

转载自blog.csdn.net/qq_24546137/article/details/81433166