有效地使用python map

时间:2014-02-13 16:40:52

标签: python map

我已经定义了这样的结构。基本上是名称对

from collections import namedtuple
CP = namedtuple('Cell', ['attr', 'value'])

这适用于更大的有序结构,如下所示

_structure = [CP('id', None), CP('name', None)]

然后我得到一系列对应于_structure

的三个实例的结果
results = [(1,'foo'),(2,"bar"),(3,"zaz")]

我如何map以下内容:

final = [[CP('id', 1), CP('name', "foo")],
         [CP('id', 2), CP('name', "bar")],
         [CP('id', 3), CP('name', "zaz")],]

1 个答案:

答案 0 :(得分:1)

我会使用列表理解:

final = [[CP('id', ident), CP('name', name)] for (ident,name) in results]

但你提到了map,你也可以使用它:

final = map(lambda (ident,name): [CP('id',ident),CP('name',name)], results)

(请注意,我没有将id变量命名为id,因为它与Python中的现有全局函数冲突。)

在Python中,理解/生成器通常比map更受欢迎,因为它们更通用,可以说更清晰。诚然,map中相对缺乏一般性主要是因为用于创建匿名函数的Python lambda构造与更多函数式语言中可用的构造相比是相当有限的,其中map和朋友统治至高无上。

相关问题