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