1

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 ではエラーが発生します。このトピックに関するドキュメントは見つかりませんでした。

理由は何ですか?この問題に対する簡単な解決策はありますか?つまり、同等(同じセマンティクス)であるが異なる構文を使用するラムダ式の定義はありますか?

4

2 に答える 2

4

Python 2.6 では、フィールド名が必要です (フォーマット文字列の構文を参照してください)。Python 2.7+ では省略可能です:

バージョン 2.7 で変更:位置引数指定子は省略できるため、'{} {}'と同等'{0} {1}'です。

したがって、コードを Python 2.6 と互換性を持たせたい場合は、次のように記述します。

g = lambda x : ['{0:d}'.format(i) for i in x]
g([1,2,3,4])
于 2012-04-11T19:29:36.280 に答える
0

2.6では、位置指定子がstr.format() 必要です。

g = lambda x : ['{0:d}'.format(i) for i in x]
于 2012-04-11T19:27:09.250 に答える