如何将lambda函数作为输入

时间:2016-10-31 02:59:32

标签: python lambda

单独的函数接受一个函数和列表并返回两个列表,我的问题是如何将以下函数转换为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):

2 个答案:

答案 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