【发布时间】:2019-05-18 21:55:34
【问题描述】:
高效构建的最佳方法是了解构建时使用的工具包。然而,在尝试理解 python 的核心函数时,我突然想到 map 函数给出了与通用生成器表达式相似的结果。
以下一段代码为例。 这两个对象,映射和生成,在你扔它们的任何情况下都表现得惊人的相似。
def concatenate(string1 = "", string2 = ""):
return string1.join(" ", string2)
foo = ["One", "Two"]
bar = ["Blue", "Green"]
mapped = map(concatenate, foo, bar)
generated = (concatenate(string1 = a, string2 = b) for a, b in zip(foo, bar))
好吧,我知道这是一行更长的代码,但我很难相信这就是 map 存在的全部原因,所以在我寻求理解 python 的过程中。 map 在 python 中还能做什么?它真的只是旧时代的遗物吗?如果不是,我在哪里可以最好地使用这个工具?
【问题讨论】:
-
Map 基本上被替换为列表理解。它仍然作为一些用途(用于特殊情况),但它主要已被 python 3 中的列表理解所取代。有些人更喜欢使用 map,因为这是他们熟悉的,但基本上它只是遗留问题。
-
嗯,但这并没有打破蟒蛇的禅宗:“应该有一种——最好只有一种——明显的方式来做到这一点。”如果是这样,那为什么开发者不选择在 python 3 中排除它呢?保留它只会增加混乱。请问有什么特殊情况吗?
标签: python-3.x mapping generator