Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python列表中获取实际值_Python - Fatal编程技术网

从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类似于[,…],我如何让python将b计算为它的实际值

--编辑--

很抱歉造成混淆,我感到沮丧的是Python没有给出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是一个整数加上一个整数。