我正在尝试将为 python 2.7 编写的代码反向移植到 python 2.6(原因是应该运行代码的服务器只有 python 2.6,而管理员拒绝安装 python 2.7 或更高版本)。
总的来说这很好用,但我发现了以下问题。在原始代码中,行(或类似的东西):
g = lambda x : ['{:d}'.format(i) for i in x]
g([1,2,3,4])
工作正常。但是,在 python 2.6 中它们会产生错误。我在文档中找不到关于此主题的任何内容。
这是什么原因?这个问题是否有任何简单的解决方案,即等效(相同语义)但使用不同语法的 lambda 表达式的定义?
最佳答案
在 Python 2.6 中,字段名称是必需的(参见 Format String Syntax )。在 Python 2.7+ 中,it can be omitted :
Changed in version 2.7: The positional argument specifiers can be omitted, so
'{} {}'
is equivalent to'{0} {1}'
.
所以如果你想让你的代码兼容Python 2.6,那么这样写:
g = lambda x : ['{0:d}'.format(i) for i in x]
g([1,2,3,4])
关于python - python 2.6 vr 中的列表理解和 lambda 表达式。 python 2.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10112511/