python - map 等价于列表理解

标签 python list-comprehension iterable-unpacking map-function

[foo(item['fieldA'], item['fieldC']) for item in barlist]

是否有对应的 map ?

我的意思是,像这样:

map(foo, [(item['fieldA'], item['fieldB']) for item in barlist])

但它不起作用。 只是好奇。

最佳答案

您正在寻找itertools.starmap() :

from itertools import starmap

starmap(foo, ((item['fieldA'], item['fieldB']) for item in barlist))

starmap 将可迭代对象中的每个项目作为单独的参数 应用于可调用对象。嵌套的生成器表达式可以替换为 operator.itemgetter() object更多贴图优势:

from itertools import starmap
from operator import itemgetter

starmap(foo, map(itemgetter('fieldA', 'fieldB'), barlist))

itertools 中的所有可调用对象一样,这会生成一个迭代器,而不是一个列表。但是,如果您使用的是 Python 3,那么 map() 也是如此。如果您使用的是 Python 2,将 map() 换成 itertools.imap() 可能是个好主意在这里。

关于python - map 等价于列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763300/

相关文章:

python - 不在列表中 - 列表理解

python - 为什么我的 numpy 构造忽略元组解构?

python - keras 模型中出现 'only size-1 arrays can be converted to python scalars' 错误

python - 二维网格上的洪水填充

python - 使用Python(Beautifulsoup)拾取网页上的文本

python:理解中的异常:我可以获得循环变量的检索值吗?

python - 如何使用 sklearn 库使用朴素贝叶斯进行文本分类?

python - 使用 for 循环与列表理解来优化代码

python - 为什么将元组分配给带注释的变量需要括号?

python - Python 中的通配符?