Python嵌套列表轉(zhuǎn)一維的方法(壓平嵌套列表)
前一段去云英面試,技術(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] #or from itertools import chain print list(chain(*a)) #or import itertools a = [[1,2,3],[4,5,6], [7], [8,9]] out = list(itertools.chain.from_iterable(a)) #or a=[[1,2],[3,4],[5,6]] t=[] [t.extend(i) for i in a] print t #or a=[[1,2],[3,4],[5,6]] print sum(a,[]) #or reduce(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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python實(shí)現(xiàn)繪制發(fā)散條形圖
發(fā)散條形圖用于簡化多個(gè)組的比較,它許我們比較各組中的數(shù)值,還幫助我們快速地想象出有利的和不利的或積極的和消極的反應(yīng),下面我們就來看看如何使用Python繪制發(fā)散條形圖吧2024-04-04
LeetCode189輪轉(zhuǎn)數(shù)組python示例
這篇文章主要為大家介紹了LeetCode189輪轉(zhuǎn)數(shù)組python解法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
詳解Python 2.6 升級(jí)至 Python 2.7 的實(shí)踐心得
本篇文章主要介紹了詳解Python 2.6 升級(jí)至 Python 2.7 的實(shí)踐心得,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)字典相關(guān)計(jì)算問題示例
這篇文章主要介紹了Python字典相關(guān)計(jì)算問題,結(jié)合實(shí)例形式總結(jié)分析了Python字典相關(guān)的最小值、最大值、排序等操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-02-02
Python 數(shù)據(jù)庫操作 SQLAlchemy的示例代碼
這篇文章主要介紹了Python 數(shù)據(jù)庫操作 SQLAlchemy的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
Python 元組拆包示例(Tuple Unpacking)
今天小編就為大家分享一篇Python 元組拆包實(shí)例(Tuple Unpacking),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python循環(huán)語句中else的用法總結(jié)
這篇文章給大家整理了關(guān)于Python中循環(huán)語句中else的用法,包括常規(guī)的 if else 用法、if else 快捷用法、與 for 關(guān)鍵字一起用、與 while 關(guān)鍵字一起用以及與 try except 一起用的用法總結(jié),有需要的朋友們可以參考借鑒。2016-09-09
python執(zhí)行精確的小數(shù)計(jì)算方法
今天小編就為大家分享一篇python執(zhí)行精確的小數(shù)計(jì)算方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python基礎(chǔ) while循環(huán)與break、continue關(guān)鍵字
今天再帶著大家講述一下while循環(huán)。那么for循環(huán)和while循環(huán),到底有什么區(qū)別呢?下面文章就來詳細(xì)介紹,感興趣的小伙伴可以參考一下2021-10-10

