溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

多層嵌套可迭代列表的剝皮函數(shù)

發(fā)布時間:2020-06-23 09:41:49 來源:網(wǎng)絡 閱讀:389 作者:牛奶i豆?jié){ 欄目:編程語言

python中很多時候可能會遇到多層嵌套可迭代列表如下:

   list1 = [11, 22, [33, 44, [55, 66]]]
   list2 = [11, 22, [33, 44]]

其中我們想要的結果只是一個所有的結果列表而已.此時就需要一個剝皮函數(shù),把嵌套的元素全部剝離出來,放入一個列表中(遞歸實現(xiàn)).
實現(xiàn)函數(shù)如下:

  def f(x, ret=None):
        # 把上一次的結果傳遞過來
        if not ret:
                ret = []
        for i in x:
                if isinstance(i, list):
                        # 如果i為列表,則返回繼續(xù)處理,且把現(xiàn)在的處理結果傳遞回去
                        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
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI