尽管flambda函数是相同的,为什么下面两个列表理解的输出是不同的?

f = lambda x: x*x
[f(x) for x in range(10)]

[lambda x: x*x for x in range(10)]

Mind you, both type(f)type(lambda x: x*x) return the same type.

推荐答案

第一个函数创建一个lambda函数并调用它十次.

第二个不调用该函数.它创建了10个不同的lambda函数.它将所有这些都放在一个列表中.要使其等同于第一个,您需要:

[(lambda x: x*x)(x) for x in range(10)]

或者更好的是:

[x*x for x in range(10)]

Python相关问答推荐

使用多个性能指标执行循环特征消除

实现的差异取决于计算出的表达是直接返回还是首先存储在变量中然后返回

Google Drive API获取文件计量数据

如何在图片中找到这个化学测试条?OpenCV精明边缘检测不会绘制边界框

Python 3.12中的通用[T]类方法隐式类型检索

如何从具有不同len的列表字典中创建摘要表?

删除所有列值,但判断是否存在任何二元组

为什么这个带有List输入的简单numba函数这么慢

加速Python循环

Pre—Commit MyPy无法禁用非错误消息

计算分布的标准差

名为__main__. py的Python模块在导入时不运行'

为什么if2/if3会提供两种不同的输出?

合并与拼接并举

搜索按钮不工作,Python tkinter

OpenGL仅渲染第二个三角形,第一个三角形不可见

用SymPy在Python中求解指数函数

如何获得3D点的平移和旋转,给定的点已经旋转?

numpy数组和数组标量之间的不同行为

简单 torch 模型测试:ModuleNotFoundError:没有名为';Ultralytics.yolo';