从Python列表中获取实际值
说我有从Python列表中获取实际值,python,Python,说我有 a = [1,2,3] b = [foo(x) for x in a] 现在b类似于[,…],我如何让python将b计算为它的实际值 --编辑-- 很抱歉造成混淆,我感到沮丧的是Python没有给出b中的实际值,因此当我尝试执行以下操作时: b[0] + 1 它给出了以下错误: TypeError: unsupported operand type(s) for +: 'function' and 'int' 如果我知道你想要它做什么,你不需要lambda b = [x+1 fo
a = [1,2,3]
b = [foo(x) for x in a]
现在b类似于[b[0] + 1
它给出了以下错误:
TypeError: unsupported operand type(s) for +: 'function' and 'int'
如果我知道你想要它做什么,你不需要lambda
b = [x+1 for x in a]
应该做你想做的。你正在做的是创建一个lambda函数列表,你想要的是
a = [1,2,3]
b = [x+1 for x in a]
如果您只需要这些值,那么根本不需要lambda。 你可以简单地写:
b = [x + 1 for x in a]
如果出于某种原因,您仍然希望评估b
版本中的lambda,您可以编写如下内容:
c = [f(n) for f, n in zip(b, a)]
在理解之外定义您的功能:
def foo(x):
return x + 1
a = [1,2,3]
b = [foo(x) for x in a]
[x + 1 for x in a]
[(lambda y: y+1)(x) for x in a]
现在,b==[2,3,4]
。或者,正如其他人所指出的,只需在列表中使用函数体:
def foo(x):
return x + 1
a = [1,2,3]
b = [foo(x) for x in a]
[x + 1 for x in a]
[(lambda y: y+1)(x) for x in a]
…尽管这假设您可以以这种方式复制函数体(对于更复杂的函数,您将无法这样做)
请注意,lambda
表达式的结果与键入函数名相同,例如,lambda x:x+1
和foo
表示相同的内容:一个需要为其指定参数并返回结果的函数。为了澄清,以下是在列表理解中“使用”lambda的方式:
def foo(x):
return x + 1
a = [1,2,3]
b = [foo(x) for x in a]
[x + 1 for x in a]
[(lambda y: y+1)(x) for x in a]
…但说真的,不要这样做;) 你想完成什么?现在您只是创建一个lambda函数数组,它只接受一个参数。。。你的代码并没有按照你说的做
b=[foo(x)for x in a]
给我一个结果列表,而不是函数列表(对于foo
的给定定义,例如def foo(x):返回x+1
)。你能发布foo(x)函数吗?更新的问题中的代码应该有效:b[0]+1是一个整数加上一个整数。