python中很多時候可能會遇到多層嵌套可迭代列表如下:
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的宜君網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴! list1 = [11, 22, [33, 44, [55, 66]]]
list2 = [11, 22, [33, 44]]
其中我們想要的結(jié)果只是一個所有的結(jié)果列表而已.此時就需要一個剝皮函數(shù),把嵌套的元素全部剝離出來,放入一個列表中(遞歸實現(xiàn)).
實現(xiàn)函數(shù)如下:
def f(x, ret=None):
# 把上一次的結(jié)果傳遞過來
if not ret:
ret = []
for i in x:
if isinstance(i, list):
# 如果i為列表,則返回繼續(xù)處理,且把現(xiàn)在的處理結(jié)果傳遞回去
f(i, ret)
else:
ret.append(i)
# 最終返回所有的元素
return ret
第二種方法:
# 第二種方法
def f2(x):
ret = []
for m in x:
if isinstance(m, list):
# 進行遞歸剝皮將列表挨個遞歸添加到ret列表中
# 因為f2函數(shù)最終返回的是一個列表,所以不管多少層f2(m)將始終是一個列表
# 循環(huán)將元素加入ret列表中
for n in f2(m):
ret.append(n)
else:
ret.append(m)
return ret
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。