真正相当于imap
,使用生成器表达式:
(x + 3 for x in mylist)
Like imap
,这不会立即构造一个完整的新列表,而是按需计算结果序列的元素(因此,如果将结果链接到另一个迭代中,则比列表理解更有效)。
如果你好奇在哪里partial
将是一个更好的选择lambda
在现实世界中,通常是在处理可变数量的参数时:
>>> from functools import partial
>>> def a(*args):
... return sum(args)
...
>>> b = partial(a, 2, 3)
>>> b(6, 7, 8)
26
使用的等效版本lambda
将会...
>>> b = lambda *args: a(2, 3, *args)
>>> b(6, 7, 8)
26
这稍微不太简洁 - 但是lambda
确实为您提供了无序应用程序的选项,这partial
才不是:
>>> def a(x, y, z):
... return x + y - z
...
>>> b = lambda m, n: a(m, 1, n)
>>> b(2, 5)
-2