Python小程序-迭代輸出多層嵌套列表中的每個元素並顯示嵌套列表的層次結構

程序代碼:

def iteration(list_name,indent = False,level = 0):
    '''此函數的作用是迭代輸出一個列表及其中的嵌套列表中的每個元素。
    其包含三個參數,第一個參數是要傳入的列表的名稱,第二個參數是控
    制是否使用縮進來顯示列表中的嵌套的層次結構,第三個參數是控制輸
    出時是否首行縮進,其數值就是使用Tab縮進的次數'''
    for i in list_name:
        if isinstance(i,list):
            iteration(i,indent,level + 1) #利用遞歸函數處理嵌套列表
        else:
            if indent:
                print('\t' * level,end='')
            print(i)
list1=['aa',['bb',['cc',['dd','ee']]],'ff'] #定義一個待處理的多層嵌套列表
iteration(list1,True,0) #調用iteration函數對其處理

程序輸出:

aa
    bb
        cc
            dd
            ee
ff

Python利用遞歸函數迭代輸出多層嵌套列表中的每個元素

Python的列表很強大也很靈活,如何運用好列表就是一門大學問啦!在列表中經常見到下面這種形式:

list1=['aa',['bb',['cc',['dd','ee']]],'ff']

如果使用for循環迭代輸出列表中的每個元素會得到下面的結果:

>>> list1=['aa',['bb',['cc',['dd','ee']]],'ff']
>>> for i in list1:
...    print(i)
...
aa
['bb', ['cc', ['dd', 'ee']]]
ff

可以看到,列表中嵌套的列表被整個當成一個元素輸出了出來,那麼該怎樣做才能將嵌套的列表中的每個元素單獨輸出出來呢?

先看一下常規的實現方法——for循環嵌套。

>>> list1=['aa',['bb',['cc',['dd','ee']]],'ff']
>>> for i in list1:
...     if isinstance(i,list):
...         for a in i:
...             print(a)
...     else:
...         print(i)
...
aa
bb
['cc', ['dd', 'ee']]
ff

上面的例子中可以看到,使用for循環嵌套一層之後列表中的第一層嵌套的列表中的每個元素成功被輸出出來了,但是第二層、第三層嵌套的列表中的每個元素依舊沒有被依次輸出。

這時候就需要用到for循環的多層嵌套了,但多層嵌套的for循環不僅寫起來繁瑣,讀起來更要命。有沒有其他更好的解決方法呢?當然有的——利用遞歸函數來輕鬆實現!

>>> list1=['aa',['bb',['cc',['dd','ee']]],'ff']
>>> def iteration(a):
...     for b in a:
...         if isinstance(b,list):
...             iteration(b)
...         else:
...             print(b)
...
>>> iteration(list1)
aa
bb
cc
dd
ee
ff

根據上面例子的輸出可以看到,完美實現了要求的功能。本文僅僅演示下如何利用遞歸函數來解決此類問題,不對其做詳細介紹。