Python巢狀列表轉一維的方法 壓平巢狀列表

2022-09-28 05:33:09 字數 1263 閱讀 6836

前一段去雲英面試,技術官很」不厚道「了問了乙個非常簡單的問題:如何將多維列程式設計客棧表轉化了一維的?當時雖然想到dwyupmal了使用迭代或者列表生成式可以做到,但是可以沒能可行的**,回來後一頓後悔。

對於規範的且巢狀維度較低的多維列表,python中有很多方法可以實現:

a=[[1,2],[3,4],[5,6]]

print [j for i in li for j in i]

#orfrom itertools import chain

print list(chain(*a))

#orimport itertools

a = [[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)

對於複雜的多維巢狀列表就需程式設計客棧要使用一些複雜的方法:

#遞迴的方法比較容易理解

def expand_list(nested_list):

for item in nested_list:

if isinstance(item, (list, tuple)):

for sub_item in expa程式設計客棧nd_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]

#生成式的方法還有很多,可以自行摸索

對於使用python2.x的童鞋,還可以使用flatten函式來做:

>>> d=[1,2,3,[4,5],[6,7,[8,9]]]

>>>from compiler.ast import flatten

>>>flatten

[1, 2, 3, 4, 5, 6,7,8,9]

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

本文標題: python巢狀列表轉一維的方法(壓平巢狀列表)

本文位址:

Python巢狀列表轉一維(壓平巢狀列表)

前一段去雲英面試,技術官很 不厚道 了問了乙個非常簡單的問題 如何將多維列表轉化了一維的?當時雖然想到了使用迭代或者列表生成式可以做到,但是可以沒能可行的 回來後一頓後悔。對於規範的且巢狀維度較低的多維列表,python中有很多方法可以實現 a 1,2 3,4 5,6 print j for i i...

python巢狀列表實現矩陣轉置的理解

code 對矩陣進行轉置 matrix 1,2,3,4 5,6,7,8 9,10,11,12 transposed row i for row in matrix for i in range 4 列表解析先從外層開始,即 for i in range 4 i首先取0,再到內層 row i for ...

python巢狀的列表儲存

簡單列表迴圈清楚了,但是巢狀的列表儲存會有點矇圈,記錄下 方式一 呼叫方法時輸出print,方法是直接return輸出資訊 def get grade student score,name for student in student score if student 1 name try grad...