成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

扁平化列表,哪個(gè)方法更快?

開發(fā) 前端
在平時(shí)的編碼過(guò)程中,經(jīng)常會(huì)碰到嵌套列表扁平化的需求,比如說(shuō)把列表[[1,2,3],[4,5]] 變成 [1,2,3,4,5],Python 有很多方法可以實(shí)現(xiàn)這一功能,到底哪個(gè)方法更快呢?

[[433688]]

在平時(shí)的編碼過(guò)程中,經(jīng)常會(huì)碰到嵌套列表扁平化的需求,比如說(shuō)把列表[[1,2,3],[4,5]] 變成 [1,2,3,4,5],Python 有很多方法可以實(shí)現(xiàn)這一功能,到底哪個(gè)方法更快呢?我們今天就來(lái)試一試。

第一種方法:建一個(gè)空列表,遍歷嵌套列表把元素逐一放入并返回:

  1. def flatten1(lst: List[list]) -> list: 
  2.     flat = [] 
  3.     for l in lst: 
  4.         for x in l: 
  5.             flat.append(x) 
  6.     return flat 

第二種方法:使用列表推導(dǎo)式:

  1. def flatten2(lst: List[list]) -> list: 
  2.     return [x for l in lst for x in l] 

第三種方法:使用列表的 extend 方法:

  1. def flatten3(lst: List[list]) -> list: 
  2.     flat = [] 
  3.     for l in lst: 
  4.         flat.extend(l) 
  5.     return flat 

第四種方法:使用 + 號(hào):

  1. def flatten4(lst: List[list]) -> list: 
  2.     flat = [] 
  3.     for l in lst: 
  4.         flat += l 
  5.     return flat 

第五種方法:使用 itertools.chain:

  1. def flatten5(lst: List[list]) -> list: 
  2.     return list(itertools.chain.from_iterable(lst)) 

第六種方法:使用 functools.reduce:

  1. def flatten6(lst: List[list]) -> list: 
  2.     return functools.reduce(operator.iconcat, lst, []) 

你可以先猜一下,然后看看下面的運(yùn)行結(jié)果:

  1. import functools 
  2. import itertools 
  3. import operator 
  4. import random 
  5. import time 
  6. from typing import List 
  7.  
  8. def flatten1(lst: List[list]) -> list: 
  9.     flat = [] 
  10.     for l in lst: 
  11.         for x in l: 
  12.             flat.append(x) 
  13.     return flat 
  14.  
  15. def flatten2(lst: List[list]) -> list: 
  16.     return [x for l in lst for x in l] 
  17.  
  18. def flatten3(lst: List[list]) -> list: 
  19.     flat = [] 
  20.     for l in lst: 
  21.         flat.extend(l) 
  22.     return flat 
  23.  
  24. def flatten4(lst: List[list]) -> list: 
  25.     flat = [] 
  26.     for l in lst: 
  27.         flat += l 
  28.     return flat 
  29.  
  30. def flatten5(lst: List[list]) -> list: 
  31.     return list(itertools.chain.from_iterable(lst)) 
  32.  
  33. def flatten6(lst: List[list]) -> list: 
  34.     return functools.reduce(operator.iconcat, lst, []) 
  35.                             # += 
  36.  
  37. def time_f(f): 
  38.     elapsed = 0.0 
  39.     n = 100 
  40.     M = 1000 
  41.     N = 100 
  42.     for _ in range(n): 
  43.         lst = [[random.randint(0,1000000) for j in range(N)] for i in range(M)] 
  44.         start = time.perf_counter() 
  45.         f(lst) 
  46.         elapsed += time.perf_counter() - start 
  47.     print(f"{f.__name__} cost {elapsed/n * 1000 :.4f} ms"
  48.  
  49. if __name__ == '__main__'
  50.     time_f(flatten1) 
  51.     time_f(flatten2) 
  52.     time_f(flatten3) 
  53.     time_f(flatten4) 
  54.     time_f(flatten5) 
  55.     time_f(flatten6) 

運(yùn)行環(huán)境:Python 3.8.5,運(yùn)行結(jié)果如下:

 

結(jié)果:前兩種方法比較慢,不推薦使用,后面四種方法差別不大,隨你挑。

 

責(zé)任編輯:武曉燕 來(lái)源: Python七號(hào)
相關(guān)推薦

2013-09-22 14:47:50

扁平化UI設(shè)計(jì)

2013-09-22 15:03:27

扁平化UI設(shè)計(jì)

2013-09-22 15:43:27

扁平化UI設(shè)計(jì)

2013-09-22 14:56:26

扁平化UI設(shè)計(jì)

2013-09-22 14:30:43

扁平化設(shè)計(jì)

2013-09-22 16:36:07

扁平化UI設(shè)計(jì)

2013-09-22 16:17:59

扁平化UI設(shè)計(jì)

2013-09-22 16:22:58

扁平化UI設(shè)計(jì)

2019-04-08 16:29:28

多云扁平化云計(jì)算

2013-07-11 09:45:48

扁平化扁平化設(shè)計(jì)

2013-09-23 10:16:04

扁平化UI設(shè)計(jì)

2013-09-22 16:30:13

扁平化UI設(shè)計(jì)

2013-09-25 10:52:27

Android 4.4扁平化

2013-06-09 11:04:07

設(shè)計(jì)扁平化設(shè)計(jì)平面化設(shè)計(jì)

2013-01-28 09:39:05

用戶界面扁平化設(shè)計(jì)

2020-09-16 14:17:42

flat方法

2010-10-25 14:16:59

扁平化網(wǎng)絡(luò)

2013-09-22 15:09:04

扁平化UI設(shè)計(jì)

2012-02-20 14:48:30

網(wǎng)絡(luò)扁平化

2010-10-25 13:58:48

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品国产一区二区三区久久 | 久久久久久国产 | 精品一区二区三区在线观看 | 99中文字幕 | 久久伊人影院 | 亚洲国产成人精 | 久久久久久久久久久高潮一区二区 | 99久久亚洲 | 四虎影音 | 欧美在线看片 | 亚洲在线 | 欧美天堂 | 国产日韩精品在线 | 自拍 亚洲 欧美 老师 丝袜 | 国产精品一区在线观看你懂的 | 成人三区四区 | 天堂色综合 | 欧美精品在线免费观看 | 日日干夜夜操天天操 | 欧美精品在线免费观看 | 亚洲在线电影 | 午夜久久久 | 国产精品福利视频 | 久久精品中文 | 视频一区在线观看 | 国产美女一区二区三区 | 亚洲天堂av在线 | 国产亚洲精品久久情网 | 日本精品视频 | 在线观看亚 | 色视频在线播放 | 欧美亚洲视频在线观看 | 欧美a区 | 精品国产91久久久久久 | 亚洲欧美精品久久 | 国产成人91 | 在线看片网站 | 99热欧美 | 久久一区二区三区四区五区 | 亚洲综合在 | 国产一区二区在线免费观看 |