以下内容涉及以下代码:(使用Python语言)
for i in object:
doSomething(i)
对比
map(doSomething, object)
两种方式都易于理解而且简短,但它们之间有速度差异吗?如果doSomething函数有一个需要检查的返回值,那么在map中它将被作为列表返回,在for循环中我们可以创建自己的列表或逐个检查。
for i in object:
returnValue = doSomething(i)
doSomethingWithReturnValue(returnValue)
对比
returnValue = map(doSomething, object)
map(doSomethingWithReturnValue, returnValue)
现在,我感觉这两个函数有点分歧。基于我们在循环中逐步检查它们还是在最后一次性检查它们,这两个doSomethingWithReturnValue函数可能会有所不同。此外,for循环似乎总是有效的,虽然速度可能较慢,而map只在特定情况下有效。当然,我们可以扭曲其中一个来使其工作,但整个重点是避免这种类型的工作。
我想要的是一个场景,在这种情况下,映射函数确实比做得好的for循环在性能、可读性、可维护性或实现速度方面表现更出色。如果答案是真的没有太大区别,那么我想知道人们什么时候使用其中之一,或者是否完全是随机的,并根据你的机构的编码标准进行设置。
谢谢!