|
10鱼币
本帖最后由 小甲鱼的龟壳儿 于 2019-11-18 16:10 编辑
1、小甲鱼老师的视频中关于lambda表达式的栗子都是表达式后只有一个式子(不知道咋描述),如:
lambda x: return x+2
或者
lambda x,y: return x + y 诸如此等
那么如果我要改写这样一个普通函数呢:
def fun(x,y):
x = x+2
y = y+3
return x,y
我是这样写的:
lambda x,y: x = x+2,y = y+3 报错:不能赋值给lambda
lambda x,y: x+2,y+3 报错: y未定义
那么是否可以认为λ表达式只能针对单一变量(如x)或者多变量(如x、y)迭代返回的单一值(只返回单一的一个x值或者x+y的值)进行简写,
不能对多变量迭代返回的多个值(如函数分别返回两个值,x 和 y)进行简化缩写?
那么如果我非要对含多个参数的函数如:
def fun(x,y):
x = x+2
y = y+3
return x,y 进行简写有方法吗,可以用lambda表达式吗?
2、filter函数中参数iterable只能有一个,那么如果函数有多个形参如何使用filter()呢,如:
list(filter(lambda x,y: x-y,“[1,2,3],[1,0,2]"))
标红双引号内的位置参数只允许有一个,无论怎么写都报错,如写成([1,2,3],[1,0,2])或打包形式[(1,1),(2,0),(3,2)]均 报错--’y未定义‘,
分开写[1,2,3],[1,0,2]参数过多,那么应该如何写才能正确使用呢?
非常感谢您的解答 ^_^~
- def filter(function_or_none, sequence): # known special case of filter
- """
- filter(function or None, sequence) -> list, tuple, or string
复制代码
filter 只接收一个sequence类型数据,如list, tuple, string,只能把他们当做一个参数打包,在函数内部再分解
- def func_filter(vals):
- if len(vals) == 2 and vals[0] > 0 and vals[1] > 0:
- return True
- else:
- return False
- filter(func_filter,[[-1,-1],[0,0],[1,1]])
复制代码
|
最佳答案
查看完整内容
filter 只接收一个sequence类型数据,如list, tuple, string,只能把他们当做一个参数打包,在函数内部再分解
|