日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python 把兩層列表展開平鋪成一層(5種實現方式)

瀏覽:23日期:2022-06-23 10:18:25

這幾天和同事在討論,如何用 Python 寫出優雅的讓列表中的列表展開,變成扁平化的列表。

例如

# 期望輸入input = [[(’A’, 1), (’B’, 2)], [(’C’, 3), (’D’, 4)]] # 期望輸出output = [(’A’, 1), (’B’, 2), (’C’, 3), (’D’, 4)]map 函數合并

>>> new = []; map(new.extend, input); new[None, None][(’A’, 1), (’B’, 2), (’C’, 3), (’D’, 4)]

這個方法看上去還可以,但是有個致命的缺點,就是map函數會返回值,并且這個返回值是沒有用的。另外還需要提前聲明一個變量,從代碼的簡潔性上,不夠簡潔優雅。

sum 函數合并

>>> sum(input, [])[(’A’, 1), (’B’, 2), (’C’, 3), (’D’, 4)]

這個看上去很簡潔,不過有類似字符串累加的性能陷阱。后面有性能對比。

reduce 函數

>>> reduce(list.__add__, input)[(’A’, 1), (’B’, 2), (’C’, 3), (’D’, 4)]

做序列的累加操作。也是有累加的性能陷阱。

列表推導式

>>> [item for sublist in input for item in sublist][(’A’, 1), (’B’, 2), (’C’, 3), (’D’, 4)]

列表推導式,看著有些長,而且還要for循環兩次,變成一行理解需要費勁一些,沒有那么直觀。

itertools 類庫

>>> list(itertools.chain(*input))[(’A’, 1), (’B’, 2), (’C’, 3), (’D’, 4)]

通過第三方類庫類實現的,相比其他的幾個實現,看著還算比較優雅。最后的性能發現居然還很高。

性能大對比

python -mtimeit -s’l=[[1,2,3],[4,5,6], [7], [8,9]]*99’ ’reduce(list.__add__,l)’1000 loops, best of 3: 547 usec per looppython -mtimeit -s’l=[[1,2,3],[4,5,6], [7], [8,9]]*99’ ’sum(l, [])’1000 loops, best of 3: 509 usec per looppython -mtimeit -s’l=[[1,2,3],[4,5,6], [7], [8,9]]*99’ ’[item for sublist in l for item in sublist]’10000 loops, best of 3: 52.8 usec per looppython -mtimeit -s’l=[[1,2,3],[4,5,6], [7], [8,9]]*99; import itertools;’ ’list(itertools.chain(*l))’10000 loops, best of 3: 35.9 usec per looppython -mtimeit -s’l=[[1,2,3],[4,5,6], [7], [8,9]]*99’ ’new = []; map(new.extend, l); new’10000 loops, best of 3: 34.1 usec per loop

歡迎大家共同探討優雅的的實現和性能的優化。

補充:python 將(含嵌套的)dict平鋪展開

話不多說,直接上代碼:

def prefix_dict(di_, prefix_s=’’): ''' 把字典的每個key都帶上前綴prefix_s :param di_: :param prefix_s: :return: ''' return {prefix_s + k: v for k, v in di_.items()} def spear_dict(di_, con_s=’.’): ''' 展開dict(如果下層還是dict),需要遞歸,展開到下層的數據類型不是字典為止 可能實用的地方:將文檔類的數據格式化成更加關系化的樣子可能有用 :param di_: 輸入字典 :param con_s: 層級間的連接符號 :return: 深度不大于1的字典,嵌套的其他數據類型照舊 ''' ret_di = {} for k, v in di_.items(): if type(v) is dict: v = spear_dict(v) # 這里或許有不寫到這一層的更好寫法 # for k_, v_ in v.items(): # ret_di.update({con_s.join([k, k_]): v_}) ret_di.update(prefix_dict(v, prefix_s=k + con_s)) else: ret_di.update({k: v}) return ret_di

>>> di_{’title’: ’新田商業街’, ’reliability’: 7, ’addressComponents’: {’streetNumber’: ’’, ’city’: ’深圳市’, ’street’: ’’, ’province’: ’廣東省’, ’district’: ’龍華區’}, ’location’: {’lng’: 114.09127044677734, ’lat’: 22.700519561767578}, ’adInfo’: {’adcode’: ’440309’}, ’level’: 11, ’more_deep’: {’loca’: {’lng’: 114.09127044677734, ’lat’: 22.700519561767578}}}>>> spear_dict(di_){’title’: ’新田商業街’, ’reliability’: 7, ’addressComponents.streetNumber’: ’’, ’addressComponents.city’: ’深圳市’, ’addressComponents.street’: ’’, ’addressComponents.province’: ’廣東省’, ’addressComponents.district’: ’龍華區’, ’location.lng’: 114.09127044677734, ’location.lat’: 22.700519561767578, ’adInfo.adcode’: ’440309’, ’level’: 11, ’more_deep.loca.lng’: 114.09127044677734, ’more_deep.loca.lat’: 22.700519561767578}spear_dict(di_, ’_’){’title’: ’新田商業街’, ’reliability’: 7, ’addressComponents_streetNumber’: ’’, ’addressComponents_city’: ’深圳市’, ’addressComponents_street’: ’’, ’addressComponents_province’: ’廣東省’, ’addressComponents_district’: ’龍華區’, ’location_lng’: 114.09127044677734, ’location_lat’: 22.700519561767578, ’adInfo_adcode’: ’440309’, ’level’: 11, ’more_deep_loca.lng’: 114.09127044677734, ’more_deep_loca.lat’: 22.700519561767578}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲作爱视频| 日韩1区2区3区| 99精品小视频| 国产精品成人自拍| 午夜在线精品偷拍| 99久久99视频只有精品| 红杏一区二区三区| 国产欧美综合一区二区三区| 激情久久中文字幕| 97精品中文字幕| 国产一区二区三区久久 | 国产综合亚洲精品一区二| 日韩久久精品网| 欧美.日韩.国产.一区.二区| 国产视频一区三区| 日本午夜精品久久久久| 美女久久99| 99精品电影| 日韩免费精品| 色婷婷色综合| 亚洲精品99| 亚洲有吗中文字幕| 国产精品v一区二区三区| 日韩另类视频| 视频一区在线视频| 久久xxxx| 久久不见久久见免费视频7| 国产精品二区不卡| 亚洲高清av| 亚洲18在线| 日本va欧美va瓶| 日韩亚洲精品在线| 欧美日韩国产探花| 快she精品国产999| 国产精品亲子伦av一区二区三区| 视频一区中文字幕国产| 国产欧美激情| 日本va欧美va欧美va精品| 久久99伊人| 久久精品九色| 国产精品毛片在线| 四虎影视精品| 亚洲美女久久| 亚洲一区二区三区中文字幕在线观看| 国产一区久久| 91亚洲精品在看在线观看高清| 蜜桃一区二区三区| 福利视频一区| 亚洲网址在线观看| 天堂成人免费av电影一区| 久久中文字幕av| 国产麻豆精品久久| 国产亚洲字幕| 国产乱码精品一区二区三区亚洲人| 秋霞影视一区二区三区| 国产亚洲高清一区| 日韩欧美激情电影| 日韩欧美另类中文字幕| 日韩一区网站| 91九色综合| 亚洲精品乱码久久久久久蜜桃麻豆| 美女尤物国产一区| 国产精品久久久久久av公交车| 欧美日韩va| 欧美福利在线| 蜜桃久久久久久| 日韩av一区二区在线影视| 国产精品一区2区3区| 亚洲欧美视频| 日韩一区二区三区在线看| 国产免费成人| 日韩中文字幕高清在线观看| 亚洲一区资源| 色爱综合av| 国产一区一一区高清不卡| 国产精品精品国产一区二区| 成人欧美一区二区三区的电影| 国产欧美午夜| 欧美交a欧美精品喷水| 精品国产欧美| 日欧美一区二区| 国产精品啊啊啊| 高清精品久久| 国产欧美一区| 91av亚洲| 日韩大片在线播放| 欧美精品国产白浆久久久久| 精品91福利视频| 神马日本精品| av资源亚洲| 免费人成在线不卡| 日韩午夜一区| 国产精品久久久网站| 亚洲精品美女91| 丁香婷婷久久| 国产精品多人| 国产精品久久久久久久久久齐齐| 综合国产在线| 69精品国产久热在线观看| 亚洲欧美专区| 日韩综合精品| 亚洲人www| 亚洲乱亚洲高清| 国产一区二区三区国产精品| 久久天堂成人| 亚洲成人精选| 国产精品调教视频| 视频在线在亚洲| 亚洲欧美日韩综合国产aⅴ| 日韩精品亚洲专区| 欧美freesex黑人又粗又大| 国产成人精品亚洲日本在线观看| 亚洲午夜av| 日韩av成人高清| 91九色综合| 成人在线超碰| 蜜臀久久99精品久久久久久9| 日韩中文字幕av电影| 国模精品一区| 四虎在线精品| 国产精品一区二区美女视频免费看| 日韩欧美午夜| 亚洲资源在线| 欧美一区二区性| 国内精品美女在线观看| 精品网站aaa| 免费人成精品欧美精品| 九九精品调教| 欧美综合国产| 蜜臀国产一区| 午夜av成人| 日本欧美大码aⅴ在线播放| 久久精品亚洲人成影院| 宅男噜噜噜66国产日韩在线观看| 久久av免费| 日韩精品免费视频一区二区三区| 国产精品午夜av| 久久国产精品毛片| 国产66精品| 影音国产精品| 98精品久久久久久久| 午夜一区在线| 久久九九电影| а√天堂中文在线资源8| 久久国产电影| 国产欧美丝祙| 蜜臀国产一区二区三区在线播放 | 99热精品在线观看| 97精品在线| 亚洲一区二区三区高清| 中文字幕在线看片| 亚洲韩日在线| 日韩国产精品久久久久久亚洲| 亚洲黄页一区| 国产九九精品| 亚洲精品伊人| 日韩中文一区二区| 国产精品二区不卡| 国产精品qvod| 欧美视频久久| 国产精品日本一区二区不卡视频| 日韩精品福利一区二区三区| 四季av一区二区凹凸精品| 日本不卡在线视频| 日韩精品1区2区3区| 福利精品一区| 欧美黑人做爰爽爽爽| 日韩精品视频在线看| 日本视频在线一区| 热久久免费视频| 日韩成人综合| 日本久久综合| 精品视频国产| 中文字幕亚洲在线观看| 桃色一区二区| 欧美激情麻豆| 久久中文字幕一区二区| 久久精品国产亚洲aⅴ| 人人爽香蕉精品| 亚洲一二av| 国产一区二区三区成人欧美日韩在线观看| 国内不卡的一区二区三区中文字幕 | 国产精品videossex久久发布| 日本一区二区三区中文字幕| 日韩专区在线视频| 石原莉奈在线亚洲三区| 久久精品高清| 国产九九精品| 天堂成人免费av电影一区 | 日韩和欧美的一区| 欧美日韩一区二区三区视频播放| 婷婷综合六月| 亚洲高清激情| 精品国产黄a∨片高清在线| 日韩精品免费观看视频| 国产综合婷婷| 亚洲va久久| 国产亚洲一区二区三区啪| 免费不卡在线视频| 国产精品亚洲产品|