返回列表的地图功能具有保存键入的优点,尤其是在交互式会话期间。您可以定义返回列表的lmap
函数(类似于python2的函数imap
):
lmap = lambda func, *iterable: list(map(func, *iterable))
然后打电话 lmap
而不是即可map
完成工作:比
lmap(str, x)
短5个字符(在这种情况下为30%),list(map(str, x))
并且肯定比短[str(v) for v in x]
。您也可以创建类似的功能filter
。
对原始问题有一条评论:
我建议重命名为Geting map()以返回Python 3. *中的列表,因为它适用于所有Python3版本。有没有办法做到这一点?– meawoppl 1月24日17:58
这是有可能做到这一点,但它是一个非常糟糕的主意。只是为了好玩,您可以(但不应)执行以下操作:
__global_map = map #keep reference to the original map
lmap = lambda func, *iterable: list(__global_map(func, *iterable)) # using "map" here will cause infinite recursion
map = lmap
x = [1, 2, 3]
map(str, x) #test
map = __global_map #restore the original map and don't do that again
map(str, x) #iterator
map()
在几乎是从语言删除,因为没有任何理由使用它在列表中理解或for
循环。