Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将此for循环编写为map函数_Python_Loops - Fatal编程技术网

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)
这样的函数可能会更快,但通常情况下不会。