python入门

python第21课练习—lambda表达式

2019-05-25  本文已影响0人  YoYoYoo

1、请使用lambda表达式将下边函数转化为匿名函数?

lambda表达式
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。

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

答案:

lambda x,y=3: x*y

2、请将下边匿名函数转变成普通函数?

lambda x: x if x % 2 else None

答案:

def is_odd(x):
    if x % 2:  # x % 2 表示x % 2 != 0
        return x
    else:
        return None

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

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象。
语法:filter(function, iterable)
用法:

def is_odd(n): 
    return n % 2 == 1
 
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist) # 过滤出给定列表中所有奇数

第3题答案:

print(list(filter(lambda n:  not(n%3),range(1,100))))

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

答案:

print([i for i in range(1,100) if not(i%3)])

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表达式)

map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

map() 函数语法:
map(function, iterable, ...)

答案:

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

6、请预测以下代码会打印什么?

def make_repeat(n):
    return lambda s: s * n
double = make_repeat(2)
print(double(8))
print(double('FishC'))

输出如下:

16
FishCFishC
上一篇 下一篇

猜你喜欢

热点阅读