2012-04-11 49 views
1

我正在尝试将用于python 2.7的代码移植到python 2.6中(原因是代码应该运行的服务器只有python 2.6,管理员拒绝安装python 2.7或更高版本)。python 2.6 vr中的列表理解和lambda表达式python 2.7

一般来说,这工作得很好,但我发现了以下问题。在原始代码行(或类似的东西):

g = lambda x : ['{:d}'.format(i) for i in x] 
g([1,2,3,4]) 

工作正常。但是,在Python 2.6中,它们会产生一个错误。在文档上找不到关于此主题的任何内容。

是什么原因?有没有简单的解决这个问题的方法,即定义相同的lambda表达式(相同的语义),但使用不同的语法?

回答

4

在Python 2.6,需要字段名称(参见Format String Syntax)。在Python 2.7+,it can be omitted

改变在2.7版本:的位置参数说明符可以被省略,因此'{} {}'相当于'{0} {1}'

所以,如果你想你的代码兼容的Python 2.6,它写像这样:

g = lambda x : ['{0:d}'.format(i) for i in x] 
g([1,2,3,4]) 
0

在2.6,str.format()必须有位置确定。

g = lambda x : ['{0:d}'.format(i) for i in x]