遞歸遍歷嵌套結構(多層List)中的元素 ------Python


讀Python基礎教程(第二版)后看到了這么一個東西,就是利用遞歸遍歷嵌套結構中的元素。

 

上代碼:

#encoding:UTF-8

def flatten(nested):
    try:
        #不要迭代類似字符串的對象:
        try:
            nested+'' 
        except TypeError:
            pass
        else:
            raise TypeError

        for sublist in nested:
            for element in flatten(sublist):
                yield element
    except TypeError:
        yield nested
    

print list(flatten(['foo', ['bar', ['baz'], 123]])) 

 

 

感覺這個方法十分神奇,不得不說在Python語言中經常會出現一些要人意想不到的東西,比如這個,判斷一個變量是否為 字符型 采用  element+""  的方式,並采用TypeError 的異常檢查,實現十分新穎。

 

 

        #不要迭代類似字符串的對象:
        try:
            nested+'' 
        except TypeError:
            pass
        else:
            raise TypeError

該段代碼  如果字符類型則報異常 TypeError, 如果不是字符則自身捕獲異常。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM