Python 如何将此for循环编写为map函数
我读到Python 如何将此for循环编写为map函数,python,loops,Python,Loops,我读到map用于迭代比用于循环更有效。如何在此for循环中使用map: import time start = time.time() L = [] a = 5 b = 0 for i in range(1000): L.append(i) b +=a print(L) print(b) end = time.time() print(end-start) 如果确实要使用映射: L = [] a, b = 5, 0 list(map(L.append, range(10
map
用于迭代比用于循环更有效。如何在此for循环中使用map
:
import time
start = time.time()
L = []
a = 5
b = 0
for i in range(1000):
L.append(i)
b +=a
print(L)
print(b)
end = time.time()
print(end-start)
如果确实要使用映射
:
L = []
a, b = 5, 0
list(map(L.append, range(1000)))
# or sum(map(bool, map(L.append, range(1000)))) - doesn't waste memory
b = a * len(L)
注意,要执行对L.append
的调用,需要迭代map
的输出,这就是list
和sum
在此代码中所做的
但是,在这种情况下,您不需要使用它。这看起来和性能更好:
L = list(range(1000))
如果您使用的是Python2,那么如果您从一个项目列表开始,然后希望对该列表的每个元素单独应用一个函数,那么只需执行L=range(1000)
map
就有意义了。这里的情况似乎不是这样。你试过自己写吗?哪些部件有问题?你能告诉我们你的映射代码不起作用吗?For循环通常做4件事之一:转换、搜索、过滤或聚合。您的循环正在执行其中的两个map
是一种转换。您可以执行L=map(无,范围(1000))
和b=a*len(L)
。但是第一部分很傻,第二部分是数学。@ArturMüllerRomanov一般来说,map并不比for循环更有效。当使用内置函数时,类似于map(int,list\u of\u strings)
这样的函数可能会更快,但通常情况下不会。