如何将指定for循环改写为map函数?关于map迭代效率的技术问询
如何用map函数替代指定的for循环?
嘿,你提到map在迭代时比for循环效率更高这点没错,尤其是处理批量映射类操作的时候!咱们来一步步把你这段代码改成用map实现的版本~
先拆解你原代码里的两个核心操作:生成列表L,以及计算累加值b,咱们分别用map来处理:
1. 生成列表L
原for循环是把range(1000)的每个元素逐个添加到L中,用map的话,只需要把每个元素原样返回(用lambda表达式做映射函数),再把map返回的迭代器转成列表就行:
L = list(map(lambda x: x, range(1000)))
小贴士:其实直接写L = list(range(1000))更高效,毕竟没必要多一层lambda映射,但既然你要求用map,上面的写法就完全符合需求~
2. 计算累加值b
原循环里每次给b加固定值a(也就是5),一共执行1000次。用map的话,我们可以让map每次迭代都返回a,再用sum()函数对这些返回值求和,完美替代循环累加的逻辑:
b = sum(map(lambda x: a, range(1000)))
完整改写后的代码
import time start = time.time() a = 5 # 用map生成列表L L = list(map(lambda x: x, range(1000))) # 用map+sum计算累加值b b = sum(map(lambda x: a, range(1000))) print(L) print(b) end = time.time() print(end-start)
小补充
map是基于C实现的内置函数,在处理大量元素时,确实比纯Python层的for循环有明显效率优势,但如果是像你这种简单操作,差距可能不会特别大,你可以自己跑计时代码对比看看~
内容的提问来源于stack exchange,提问作者Artur Müller Romanov
相关产品推荐
相关产品推荐

