国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python嵌套列表轉(zhuǎn)一維的方法(壓平嵌套列表)

2020-02-15 22:10:40
字體:
供稿:網(wǎng)友

前一段去云英面試,技術(shù)官很”不厚道“了問了一個(gè)非常簡單的問題:如何將多維列表轉(zhuǎn)化了一維的?當(dāng)時(shí)雖然想到了使用迭代或者列表生成式可以做到,但是可以沒能可行的代碼,回來后一頓后悔。

對(duì)于規(guī)范的且嵌套維度較低的多維列表,python中有很多方法可以實(shí)現(xiàn):

a=[[1,2],[3,4],[5,6]]print [j for i in li for j in i]#orfrom itertools import chainprint list(chain(*a))#orimport itertoolsa = [[1,2,3],[4,5,6], [7], [8,9]]out = list(itertools.chain.from_iterable(a))#ora=[[1,2],[3,4],[5,6]]t=[][t.extend(i) for i in a]print t#ora=[[1,2],[3,4],[5,6]]print sum(a,[])#orreduce(lambda x, y: x+ y, a)

對(duì)于復(fù)雜的多維嵌套列表就需要使用一些復(fù)雜的方法:

#遞歸的方法比較容易理解def expand_list(nested_list):  for item in nested_list:    if isinstance(item, (list, tuple)):      for sub_item in expand_list(item):        yield sub_item    else:      yield item      #在stackoverflow看到大牛的列表生成式版本func = lambda x: [y for l in x for y in func(l)] if type(x) is list else [x]#生成式的方法還有很多,可以自行摸索

對(duì)于使用python2.X的童鞋,還可以使用flatten函數(shù)來做:

>>> d=[1,2,3,[4,5],[6,7,[8,9]]]>>>from compiler.ast import flatten>>>flatten(a)[1, 2, 3, 4, 5, 6,7,8,9]

其實(shí)上邊列舉的方法僅僅是冰山一角,大海下的冰山就等這童鞋們自行去尋找挖掘了。

以上這篇Python嵌套列表轉(zhuǎn)一維的方法(壓平嵌套列表)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長站。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泸水县| 龙井市| 隆化县| 仙桃市| 喜德县| 南乐县| 丘北县| 宁波市| 宾川县| 福清市| 醴陵市| 老河口市| 东海县| 永修县| 公主岭市| 化州市| 新干县| 邹平县| 鄂托克旗| 肇庆市| 阿鲁科尔沁旗| 河源市| 北辰区| 商水县| 张家口市| 庐江县| 普兰店市| 从江县| 锦州市| 班戈县| 竹北市| 民县| 大石桥市| 弋阳县| 高台县| 沙河市| 建湖县| 大英县| 岳阳县| 丹巴县| 五峰|