返回列表的地图功能具有节省打字的优势,尤其是在交互式会话期间。您可以定义返回列表lmap
的函数(类似于 python2's 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
。
对原始问题有评论:
我建议重命名为 Getting 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