Python 列表理解错误中的lambda

Python 列表理解错误中的lambda,python,python-2.7,Python,Python 2.7,我正在做以下工作: ll = [-8, -4, 0, 4, 8] [lambda x: x**2 for x in ll] 并获得以下错误: [<function __main__.<listcomp>.<lambda>>, <function __main__.<listcomp>.<lambda>>, <function __main__.<listcomp>.<lambda>>

我正在做以下工作:

ll = [-8, -4, 0, 4, 8]
[lambda x: x**2 for x in ll]
并获得以下错误:

[<function __main__.<listcomp>.<lambda>>,
 <function __main__.<listcomp>.<lambda>>,
 <function __main__.<listcomp>.<lambda>>,
 <function __main__.<listcomp>.<lambda>>,
 <function __main__.<listcomp>.<lambda>>]

lambda返回一个函数,它不计算该函数,您可能需要:

ll = [-8, -4, 0, 4, 8]
[x**2 for x in ll]

它等于:

ll = [-8, -4, 0, 4, 8]
def f(x):
   return x**2
[f(x) for x in ll]

lambda返回一个函数,它不计算该函数,您可能需要:

ll = [-8, -4, 0, 4, 8]
[x**2 for x in ll]

它等于:

ll = [-8, -4, 0, 4, 8]
def f(x):
   return x**2
[f(x) for x in ll]

你没有说清楚你期望什么,但我建议:

ll = [-8, -4, 0, 4, 8]
f = lambda x: x**2
print([f(x) for x in ll])

你没有说清楚你期望什么,但我建议:

ll = [-8, -4, 0, 4, 8]
f = lambda x: x**2
print([f(x) for x in ll])

为了获得列表中的数字平方,不需要lambda表达式。你应该做:

>>> [x**2 for x in ll]
[64, 16, 0, 16, 64]
在您的使用中,这不是一个错误。您正在列表中看到对lambda函数的引用(因为您没有调用该函数)。为了使其正常工作,您可以执行以下操作:

>>> ll = [-8, -4, 0, 4, 8]
>>> f = lambda x: x**2
>>> [f(x) for x in ll]
[64, 16, 0, 16, 64]
这相当于:

>>> [(lambda x: x**2)(x) for x in ll]
[64, 16, 0, 16, 64]

注意:此处根本不需要Lambda

为了获得列表中的数字平方,不需要Lambda表达式。你应该做:

>>> [x**2 for x in ll]
[64, 16, 0, 16, 64]
在您的使用中,这不是一个错误。您正在列表中看到对lambda函数的引用(因为您没有调用该函数)。为了使其正常工作,您可以执行以下操作:

>>> ll = [-8, -4, 0, 4, 8]
>>> f = lambda x: x**2
>>> [f(x) for x in ll]
[64, 16, 0, 16, 64]
这相当于:

>>> [(lambda x: x**2)(x) for x in ll]
[64, 16, 0, 16, 64]

注意:此处根本不需要Lambda

您忘记调用
Lambda
。下面是一种按顺序执行的方法:

ll = [-8, -4, 0, 4, 8]
print([(lambda x: x**2)(x) for x in ll])

您忘记调用
lambda
。下面是一种按顺序执行的方法:

ll = [-8, -4, 0, 4, 8]
print([(lambda x: x**2)(x) for x in ll])

这不是一个错误。列表中有5个lambda表达式。你以为会是什么?这不是错误。列表中有5个lambda表达式。你期待什么呢?谢谢Pawel和@Moinuddin的回复。所以我现在理解的是[lambda x:x**2 for x in ll]将返回一个包含对5个函数的引用的列表。我希望它将返回一个函数对象,并且该函数将应用于列表“ll”的元素。感谢Pawel和@Moinuddin的回复。所以我现在理解的是[lambda x:x**2 for x in ll]将返回一个包含对5个函数的引用的列表。我期望它将返回一个函数对象,并且该函数将应用于列表“ll”的元素。