考虑以下示例代码。给出这个例子只是为了强调 和 之间的不同map
功能itertools.imap
。我真正想做的事情不能用列表理解来完成,因为在我真正的问题中,我不是创建一个列表,而是用小数组填充一个更大的 numpy 数组。所以响应下面的代码,请不要建议:[f(x) for x in range(3)]
例子:
g = []
def f(x):
g.append(x)
我得到的结果map
和 itertools.map:
map(f, range(3)) # Results in g = [0,1,2]
itertools.imap(f, range(3)) # Does not change g
我希望g
按功能进行更改map
。但是,我听说它map
会(或确实)表现得像
itertools.imap
Python 3 中的那样。即使我使用的是 Python 2.7,我也想学习使用迭代器版本的地图的正确方法。我如何使用itertools.imap
来达到与使用相同的结果map
?
我可以:
b = itertools.imap(f, range(3))
list(b) # This gives g = [0,1,2] if starting with an empty g.
这是正确的方法,还是有更好的方法?
提前致谢。