python地图比循环快的原因是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
这里有三个过程,每个任务将通过增加循环提高时间复杂度
def process1 (val, type=None): 8 科(val % 123) def process2 (val,类型): 如果type==發ist": (process1(_) _ 8范围(val)] elif类型==癴or": 在范围(val): _ process1中(_) elif类型==癿ap": 列表(地图(λ_:process1(_) 8、范围(val))) def process3 (val,类型): 如果type==發ist": _ [process2(_、类型)的范围(val)] elif类型==癴or": 在范围(val): _ process2(_类型) elif类型==癿ap": 列表(地图(λ_:process2(_、类型),范围(val)))
然后通过三种循环方式,去依次执行三种任务
def list_comp (): [process1中(我,“list")我的范围(长度)] # (process2(我,“list")我在范围(长度)] # (process3(我,“list")我在范围(长度)] def for_loop (): 我的范围(长度): process1(我,“for") 8 # process2(我,“for") # process3(我,“for") def map_exp (): 列表(地图(λv: process1 (v,“map"), 8范围(长度))) #列表(地图(λv: process2 (v,“map")范围(长度))) #列表(地图(λv: process3 (v,“map")范围(长度)))
从上述的图像中,可以直观的看的到,随着任务复杂度的提高以及数据量的增大,每个循环完成需要的时间也在增加,
但是地图方式花费的时间明显比其他两种要更多。所以在不需要返回处理结果时,选择标准,或者列表解析都可以。
因为标准的循环和列表解析方式在循环任务复杂度逐渐提高的情况下,处理时间基本没有差异。
<强>需要返回结果强>
这里有三个任务,每个任务将通过增加循环提高时间复杂度
def task1 (val, type=None): 返回对应(val % 123) def task2 (val,类型): 如果type==發ist": 返回(task1(_) _的范围(val)] elif类型==癴or": res=列表() 在范围(val): _ res.append (task1 (_)) 返回res elif类型==癿ap": 返回列表(地图(λ_:task1(_),范围(val))) def task3 (val,类型): 如果type==發ist": 返回(task2(_、类型)_范围(val)] elif类型==癴or": res=列表() 在范围(val): _ 类型)res.append (task2 (_) 返回res elif类型==癿ap": 返回列表(地图(λ_:task2(_、类型),范围(val)))
然后通过三种循环方式,去依次执行三种任务
def list_comp (): #返回[task1(我,“list")我在范围(长度)] 返回(task2(我,“list")我在范围(长度)] #返回[task3(我,“list")我在范围(长度)] def for_loop (): res=列表() 我的范围(长度): # res.append (task1(我,“for")) res.append (task2(我,“for")) # res.append (task3(我,“for")) 返回res def map_exp (): #返回列表(地图(λv: task1 (v,“map")范围(长度))) 返回列表(地图(λv: task2 (v,“map")范围(长度))) #返回列表(地图(λv: task3 (v,“map")范围(长度)))
从上述的图像中,可以直观的看的到,随着任务复杂度的提高以及数据量的增大,每个循环完成需要的时间也在增加,
但是明显看出,使用list_comp列表解析在,循环需要返回处理结果的每次任务中都表现的很好,基本快于其他两种迭代方式。
而标准的循环和地图方式在循环任务复杂度逐渐提高的情况下,处理时间基本没有差异。