首先大家好,我有一个小问题。我正在尝试学习如何使用 lambda 表达式等...我有这段代码,它是我需要复制的示例。
>>>something (lambda x:x+1, lambda y:y+10, [1, 2, 3, 4])
[2, 12, 4, 14]
我需要那个输出,到目前为止我得到了这个:
l = [1,2,3,4]
def result(l):
o = l[0::2]
o2 = l[1::2]
p = map(lambda x:x+1,o)
p2 = map(lambda y:y+10,o2)
return p,p2
首先,我知道我要返回 2 个单独的列表,我正在尝试找出其中一个。
有没有办法在不将 p 和 p2 分开的情况下做到这一点? 像这样:
p = map(lambda x,y: x+1 x+10, o,o2)
我知道这条线不起作用我只是想说明我的问题
最佳答案
您错误地使用了那些 lambda
函数。为什么要使用多个 lambda 函数来处理一个简单的列表?您可以只使用一个列表理解:
r = [1, 2, 3, 4]
func = lambda x: [v+1 if i%2==0 else v+10 for i,v in enumerate(x)]
func(r)
# [2, 12, 4, 14]
为了可读性,您甚至可能更愿意为此编写一个适当的函数。
或者更好的是,您甚至可以完全不使用 lambda 函数:
[v+1 if i%2 == 0 else v+10 for i,v in enumerate(x)]
关于python - 列表和 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37842903/