从Python列表中获取实际值

时间:2011-05-16 04:34:03

标签: python

说我有

a = [1,2,3]
b = [foo(x) for x in a]

现在b类似于[<函数在0x00F91540>,...],如何让python将b计算为它的实际值?

- 编辑 -

很抱歉这令人困惑,我很沮丧的是Python没有给我b中的实际值,因此当我尝试做类似的事情时:

b[0] + 1

它给我以下错误:

TypeError: unsupported operand type(s) for +: 'function' and 'int'

4 个答案:

答案 0 :(得分:3)

如果您只想要这些值,则根本不需要lambdas。 你可以简单地写一下:

b = [x + 1 for x in a]

如果出于某种原因,您仍想评估b版本中的lambda,可以这样编写:

c = [f(n) for f, n in zip(b, a)]

答案 1 :(得分:3)

在理解之外定义你的功能:

def foo(x):
    return x + 1

a = [1,2,3]
b = [foo(x) for x in a]

现在,b == [2,3,4]。或者,正如其他人所指出的那样,只需在列表理解中使用函数体:

[x + 1 for x in a]

...虽然这假设你可以用这种方式重现功能体(你不能用于更复杂的功能)。

请注意,lambda表达式的结果与键入函数名称相同,例如。 lambda x: x+1foo表示相同的事情:需要给出参数并返回结果的函数。为了澄清,这是你在列表理解中“使用”lambda的方式:

[(lambda y: y+1)(x) for x in a]

......但是说真的,不要这样做;)

答案 2 :(得分:2)

如果我理解你想要它正确做什么,你就不需要lambda。

b = [x+1 for x in a]

应该做你想做的事。

答案 3 :(得分:1)

你正在做的是创建一个你想要的lambda函数列表

a = [1,2,3]
b = [x+1 for x in a]