<分区>
我刚刚发现映射列表在例如Python 和 Haskell 是这样完成的:
newlist = map(function, somelist)
例如Kotlin 和 Dart 是这样完成的:
newlist = somelist.map(function)
我想知道每种解决方案相对于其他解决方案有哪些优势? Python/Haskell 实现更“实用”,不是吗?
<分区>
我刚刚发现映射列表在例如Python 和 Haskell 是这样完成的:
newlist = map(function, somelist)
例如Kotlin 和 Dart 是这样完成的:
newlist = somelist.map(function)
我想知道每种解决方案相对于其他解决方案有哪些优势? Python/Haskell 实现更“实用”,不是吗?
最佳答案
它与“功能更强大”没有任何关系,只是一种用法。
Haskell 没有方法,所以
newlist = map function somelist
是唯一的写法。
在 Python 中,map
不保留可迭代对象的结构,而是生成一个新列表 (Python2) 或一个新映射对象 (Python3)。它只是一个常规函数,可以将任何可迭代对象作为参数,因此它不会附加到特定对象。 (顺便说一句,map
并不是一个特别流行的函数,使用列表或生成器推导式被认为更“pythonic”)。
在 Kotlin 中,所有可迭代对象都实现了 map
方法。与在 Python 中它只是一个常规函数不同,它是一个常规(可重写)方法,并且按原样使用。
这里真正的区别是,在 Kotlin 中,我们可以用更优化的版本覆盖它,而在 Python 中我们不能。这可能更面向对象,但实际上并没有降低功能。
关于python - map() 作为类成员与 map() 作为独立函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50099765/
相关文章:
javascript - 具有函数式编程(纯路由)的 Express.js 服务器
python - 如何在不加载整个文件的情况下从 XLS 文件中获取工作表名称?
python - Django:有什么方法可以将连续的 model.save() 操作作为 1 个数据库请求执行?
haskell - 如何编写这些函数以独立于类型 : Int vs Integer 的选择
javascript - 在javascript中过滤对象数组中的数组
javascript - 这是纯函数式的吗?在嵌套(类似闭包)函数中使用一个值
python - 文件打开 : Is this bad Python style?