激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python map比for循環快在哪

python map比for循環快在哪

2020-09-22 00:01Sight Tech. Python

這篇文章主要介紹了python 為什么map比for循環快,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

實驗結論

  • 如果需要在循環結束后獲得結果,推薦列表解析;
  • 如果不需要結果,直接使用for循環, 列表解析可以備選;
  • 除了追求代碼優雅和特定規定情境,不建議使用map

如果不需要返回結果

這里有三個process, 每個任務將通過增加循環提高時間復雜度

	def process1(val, type=None):
	 chr(val % 123)

	def process2(val, type):
	 if type == "list":
	  [process1(_) for _ in range(val)]
	 elif type == "for":
	  for _ in range(val):
	   process1(_)
	 elif type == "map":
	  list(map(lambda _: process1(_), range(val)))

	def process3(val, type):
	 if type == "list":
	  [process2(_, type) for _ in range(val)]
	 elif type == "for":
	  for _ in range(val):
	   process2(_, type)
	 elif type == "map":
	  list(map(lambda _: process2(_, type), range(val)))

然后通過三種循環方式,去依次執行三種任務

	def list_comp():
	 [process1(i, "list") for i in range(length)]
	 # [process2(i, "list") for i in range(length)]
	 # [process3(i, "list") for i in range(length)]

	def for_loop():
	 for i in range(length):
	  process1(i, "for")
	  # process2(i, "for")
	  # process3(i, "for")

	def map_exp():
	 list(map(lambda v: process1(v, "map"), range(length)))
	 # list(map(lambda v: process2(v, "map"), range(length)))
	 # list(map(lambda v: process3(v, "map"), range(length)))

python map比for循環快在哪

python map比for循環快在哪

python map比for循環快在哪

從上述的圖像中,可以直觀的看到, 隨著任務復雜度的提高以及數據量的增大,每個循環完成需要的時間也在增加,
但是map方式花費的時間明顯比其他兩種要更多。 所以在不需要返回處理結果時,選擇標準for或者列表解析都可以。

因為標準for循環和列表解析方式在循環任務復雜度逐漸提高的情況下,處理時間基本沒有差異。

需要返回結果

這里有三個task, 每個任務將通過增加循環提高時間復雜度

	def task1(val, type=None):
	 return chr(val % 123)

	def task2(val, type):
	 if type == "list":
	  return [task1(_) for _ in range(val)]
	 elif type == "for":
	  res = list()
	  for _ in range(val):
	   res.append(task1(_))
	  return res
	 elif type == "map":
	  return list(map(lambda _: task1(_), range(val)))

	def task3(val, type):
	 if type == "list":
	  return [task2(_, type) for _ in range(val)]
	 elif type == "for":
	  res = list()
	  for _ in range(val):
	   res.append(task2(_, type))
	  return res
	 elif type == "map":
	  return list(map(lambda _: task2(_, type), range(val)))

然后通過三種循環方式,去依次執行三種任務

	def list_comp():
	 # return [task1(i, "list") for i in range(length)]
	 return [task2(i, "list") for i in range(length)]
	 # return [task3(i, "list") for i in range(length)]

	def for_loop():
	 res = list()
	 for i in range(length):
	  # res.append(task1(i, "for"))
	  res.append(task2(i, "for"))
	  # res.append(task3(i, "for"))
	 return res

	def map_exp():
	 # return list(map(lambda v: task1(v, "map"), range(length)))
	 return list(map(lambda v: task2(v, "map"), range(length)))
	 # return list(map(lambda v: task3(v, "map"), range(length)))

python map比for循環快在哪

python map比for循環快在哪

python map比for循環快在哪

從上述的圖像中,可以直觀的看到, 隨著任務復雜度的提高以及數據量的增大,每個循環完成需要的時間也在增加,
但是明顯看出, 使用list_comp列表解析在, 循環需要返回處理結果的每次任務中都表現的很好,基本快于其他兩種迭代方式。

而標準for循環和map方式在循環任務復雜度逐漸提高的情況下,處理時間基本沒有差異。

為什么普遍認為map比for快?

我認為可能跟處理的數據量有關系,大部分場景下,使用者只測試了少量的數據(100W以下,比如這篇文章,就是數據量比較少,導致速度的區別不明顯),在少量的數據集下,我們確實看到了map方式比for循環快,甚至有時候比列表解析還稍微快一點,但是當我們逐漸把數據量增加原來的100倍,這時候差距的凸現出來了。

python map比for循環快在哪

如上圖,在小數據集上(100W-1KW之間), 三者消耗的時間差不多相等,但是用map方式遍歷和處理,還是有一定的加速優勢。
具體實驗代碼可以通過Github獲得

以上就是python 為什么map比for循環快的詳細內容,更多關于python map和for循環的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/sight-tech/p/12987276.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: av国产片 | 激情视频免费看 | 免费在线性爱视频 | 男男成人高潮片免费视频欧美 | www视频免费在线观看 | 成人片在线播放 | 亚洲成人第一页 | 黄色网址进入 | 91丝袜 | 国产高潮好爽受不了了夜色 | 久久久一区二区三区四区 | www69xxxxx| 亚洲最黄视频 | 综合毛片 | 爽毛片| 日本高清电影在线播放 | 精品午夜久久 | 亚洲五码在线观看视频 | 久久99精品久久久久久236 | 国产一区视频观看 | 亚洲成人福利在线观看 | 中文字幕在线观看1 | 欧美精品日日鲁夜夜添 | av在线高清观看 | 草莓福利视频在线观看 | 国产88久久久国产精品免费二区 | 4p一女两男做爰在线观看 | 91国内精品久久久久免费影院 | 久久视讯 | 国产精品久久国产精品 | 免费一级毛片在线播放视频老 | 91九色蝌蚪国产 | 久久精品中文字幕一区二区 | 国产一国产精品一级毛片 | 激情综合网俺也去 | 欧美成人a | 国产小视频在线 | 日本在线视频免费观看 | 欧美一级毛片一级毛片 | 亚洲一区二区三区在线免费观看 | 99最新网址 |