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

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

Leave a Reply

Your email address will not be published. Required fields are marked *

Captcha Code