单独的函数接受一个函数和列表并返回两个列表,我的问题是如何将以下函数转换为lambda输入以使我的单独函数工作? (我的单独函数中的第一个输入不正确,它引发语法错误)
def function(x:list):
for y in x:
if y > x[0]:
return True
else:
return False
separate(lambda x: for y in x: y > x[0], l):
答案 0 :(得分:0)
以下是采用lambda函数的示例函数。
def myNewFilter(x, lst):
return filter(x, lst)
startingWithX = lambda x: x.startswith('X')
lst = ['Xa', 'Xb', 'a', 'b']
print myNewFilter(startingWithX, lst)
输出:
['Xa', 'Xb']
答案 1 :(得分:0)
如果您可以使用map:
separate(lambda x: map(lambda y : y > x[0], x))
返回地图对象
>>>
>>> z = lambda x: map(lambda y : y > x[0], x)
>>> list(z([1,2,3]))
[False, True, True]
>>> list(z([10, 2, 3, 11, 9]))
[False, False, False, True, False]
>>>
外部 lambda将列表作为其输入(x
)并返回map
的结果。第二个lambda映射到x的元素 - map
提供迭代。
或者只使用列表理解
separate(lambda x: [y > x[0] for y in x])
>>> z = lambda x: [y > x[0] for y in x]
>>> list(z([10, 2, 3, 11, 9]))
[False, False, False, True, False]
>>>
将列表理解展开为常规函数定义,以便与帖子中的function
进行比较
def function(x:list):
result = []
for y in x:
result.append(y > x[0])
return result