国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 凤台县| 长岛县| 客服| 威信县| 牙克石市| 黄冈市| 康定县| 鱼台县| 东光县| 安化县| 临夏县| 乐清市| 大厂| 沙河市| 沈丘县| 平乡县| 呼和浩特市| 正镶白旗| 榆社县| 肃北| 郎溪县| 安国市| 桃源县| 东平县| 云林县| 砚山县| 西宁市| 郑州市| 托克逊县| 许昌县| 文山县| 怀集县| 桂阳县| 永胜县| 许昌市| 沿河| 宣汉县| 肥西县| 拉萨市| 和政县| 丰镇市|