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

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

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

瀏覽:26日期: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久久,三上悠亚国产精品一区二区三区
国产96在线亚洲| 国产伦精品一区二区三区千人斩| 国产理论在线| 日韩av中文字幕一区二区| 狠狠久久伊人中文字幕| 国产精品久久久久久久久久齐齐| 香蕉成人久久| 成人日韩精品| 精品亚洲a∨一区二区三区18| 亚洲精品影视| 婷婷视频一区二区三区| 亚洲女人av| 麻豆精品在线观看| 天堂久久av| 免费视频国产一区| 日韩高清不卡一区二区| 久久亚洲一区| 日韩激情一区二区| 欧美成a人免费观看久久| 综合视频一区| 亚洲日本欧美| 亚洲人亚洲人色久| 蜜臀av国产精品久久久久| 欧美va亚洲va日韩∨a综合色| 日韩在线观看| 亚洲在线久久| 亚洲午夜精品久久久久久app| 婷婷色综合网| 欧美日韩黄网站| 一区免费视频| 综合欧美精品| 国产精品免费看| 一区二区三区网站| www成人在线视频| 韩国精品主播一区二区在线观看| 黄色网一区二区| 久久精品国产68国产精品亚洲| 99在线精品视频在线观看| 国产精品日韩精品中文字幕| 欧美日韩免费观看视频| 免费成人在线影院| 98精品视频| 蜜臀va亚洲va欧美va天堂| 免费一级欧美片在线观看网站 | 午夜av成人| 国产精品扒开腿做爽爽爽软件| 免费欧美一区| 中文字幕系列一区| 久久精品亚洲一区二区| 亚洲免费成人av在线| 欧美精品自拍| 精品久久97| 精品视频一区二区三区四区五区| 亚洲欧美日韩视频二区| 国产真实久久| 久久精品免费一区二区三区 | 欧美香蕉视频| 精品免费在线| 色婷婷综合网| 国产成人精品三级高清久久91| **爰片久久毛片| 国产欧美高清视频在线| 久久国产麻豆精品| 国产精品日韩精品中文字幕| 国产欧美69| 91欧美极品| 欧美激情福利| 欧美少妇精品| 国产专区一区| 日韩在线观看中文字幕| 91成人在线精品视频| 国产欧美三级| xxxxx性欧美特大| 久久影视一区| 蜜臀a∨国产成人精品| 国产精品亚洲四区在线观看 | 99免费精品| 99在线精品免费视频九九视| 亚洲专区视频| 免费在线亚洲欧美| 91精品啪在线观看国产18| 日韩午夜黄色| 国产乱人伦丫前精品视频| av最新在线| 蜜桃一区二区三区在线| 国产精品大片免费观看| 深夜视频一区二区| 亚洲影视一区二区三区| 国产成人精品一区二区三区视频| 亚洲激情五月| 麻豆中文一区二区| 国产一级一区二区| 国产激情久久| 欧美天堂亚洲电影院在线观看| 国产乱码精品一区二区亚洲| 国产一区日韩一区| 精品国产亚洲一区二区三区| 亚洲综合电影一区二区三区| 国内一区二区三区| 蜜桃视频一区二区| 国产videos久久| 日韩av一区二区在线影视| 激情六月综合| 日产精品一区二区| 日韩动漫一区| 日韩一区二区免费看| 天堂av在线| 国产精品成人国产| 亚洲精品中文字幕99999| 久久精品国产68国产精品亚洲| 国产福利资源一区| 日韩毛片网站| 免费人成精品欧美精品| 欧美成人综合| 久久伦理在线| 欧美日韩视频网站| 国精品产品一区| 国产精品调教| 国产精品亚洲综合久久| 91成人在线网站| 91午夜精品| 国产探花一区二区| 亚洲三级av| 亚洲欧美久久精品| 亚欧成人精品| 欧美亚洲三区| 你懂的国产精品| 成人三级高清视频在线看| 久久精品国产久精国产爱| 国产精区一区二区| 国产精品一区二区免费福利视频 | 亚洲午夜久久久久久尤物| 亚洲爱爱视频| 91九色精品| 亚洲tv在线| 国产日产一区| 国产精品一线天粉嫩av| 你懂的亚洲视频| 黄色在线网站噜噜噜| 久久国产欧美| 在线观看视频免费一区二区三区| 日本不卡一区二区三区| 日韩av黄色在线| 免费在线观看一区| 92国产精品| 亚洲一区国产| 国产精品日韩精品在线播放| 色一区二区三区| 免费看日韩精品| 国产精品免费99久久久| 日韩大片在线播放| av亚洲免费| 欧美日韩一区自拍| 色婷婷久久久| 日韩1区2区3区| 91精品国产91久久久久久黑人| 亚洲人成在线影院| 美女精品一区二区| 国产视频一区在线观看一区免费| 日本午夜精品一区二区三区电影| 国产精品4hu.www| 亚洲网站视频| 国产精品最新| 国产视频一区欧美| 成人在线视频区| 日韩专区在线视频| 国产欧美日韩一级| 野花国产精品入口| 久久精品国产久精国产| 丝袜脚交一区二区| www.com.cn成人| 国产欧美亚洲一区| 在线综合亚洲| 在线看片一区| 四虎影视精品| 成人精品动漫一区二区三区| 日韩av午夜在线观看| 久久亚洲视频| 国产精品三上| 欧美大黑bbbbbbbbb在线| 日韩在线中文| 成人一二三区| 精品欠久久久中文字幕加勒比| 亚洲色图网站| 中文一区一区三区免费在线观| 性欧美69xoxoxoxo| 热三久草你在线| 92国产精品| 久久久国产精品一区二区中文| 国产高清视频一区二区| 你懂的亚洲视频| 国产自产自拍视频在线观看| 国产精品国产一区| 日韩精品中文字幕第1页| 国产精品久久久久av电视剧| 日韩不卡免费高清视频| 精品亚洲a∨一区二区三区18| 精品九九久久| 激情综合在线| 免费人成网站在线观看欧美高清|