前一段去雲英面試,技術官很」不厚道「了問了乙個非常簡單的問題:如何將多維列表轉化了一維的?當時雖然想到了使用迭代或者列表生成式可以做到,但是可以沒能可行的**,回來後一頓後悔。
對於規範的且巢狀維度較低的多維列表,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 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]
#生成式的方法還有很多,可以自行摸索
對於使用python2.x的童鞋,還可以使用flatten函式來做:
>>> 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]
其實上邊列舉的方法僅僅是冰山一角,大海下的冰山就等這童鞋們自行去尋找挖掘了。
Python巢狀列表轉一維的方法 壓平巢狀列表
前一段去雲英面試,技術官很 不厚道 了問了乙個非常簡單的問題 如何將多維列程式設計客棧表轉化了一維的?當時雖然想到dwyupmal了使用迭代或者列表生成式可以做到,但是可以沒能可行的 回來後一頓後悔。對於規範的且巢狀維度較低的多維列表,python中有很多方法可以實現 a 1,2 3,4 5,6 p...
python 多維列表(巢狀列表)
python 多維列表 巢狀列表 姓名,年齡,工資 姓名,年齡,工資 姓名,年齡,工資 字串 姓名,年齡,工資 例如 張三,30,2000 str 張三,30,2000 l str.split print l emp list 單個人的資訊 info input 請輸入員工資訊 info list ...
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 ...