1. 程式人生 > >python學習筆記--列印巢狀list中每個資料(遍歷列表)

python學習筆記--列印巢狀list中每個資料(遍歷列表)

遍歷new_list列表中元素
new_list = ["H1","H2",1999]

for each_list in new_list:
    print (each_list);

若列表中包含巢狀列表,怎樣處理?

笨方法:判斷列表中元素是不是列表;並繼續使用for來迴圈列印, 缺點:多個巢狀列表時會使程式碼過長過重複 難讀

new_list = ["H1","H2",1999,["hello","day"]]

for each_list in new_list:
    if isinstance(each_list,list):
        for new_each in each_list:
            print (new_each)
    else:
        print (each_list);

簡單方法:編寫遞迴函式
def each_list(list_name):
    for yuansu in list_name:
        if isinstance(yuansu,list):
            each_list(yuansu)
        else:
            print (yuansu)


new_list = ["H1","H2",1999,["hello","day"],["one","two"]]

each_list(new_list)

如果想遇到列表就縮排一次怎麼辦?

增加一個形參唄;

def each_list(list_name,level=0):
    for yuansu in list_name:
        if isinstance(yuansu,list):   #判斷當前元素是不是列表
            each_list(yuansu,level+1) #如是,則遞迴呼叫,並且標記當前元素是列表
        else:
            for tab in range(level):#固定次數
                print ("\t",end='')
            print (yuansu)


new_list = ["H1","H2",1999,["hello","day",["one","two"]]]

each_list(new_list)

如果加入一個開啟機制,不想加縮排&想加縮排 怎麼辦;

再次加入一個形參控制

def each_list(list_name,count=False,level=0):  #加入控制形參 count 預設為不開啟縮排
    for yuansu in list_name:
        if isinstance(yuansu,list):   #判斷當前元素是不是列表
            each_list(yuansu,count,level+1) #如是,則遞迴呼叫,並且標記當前元素是列表
        else:
            if count:  #判斷是否開啟縮排
                for tab in range(level):#固定次數
                    print ("\t",end='')
                print (yuansu)
            else:
                print (yuansu)


new_list = ["H1","H2",1999,["hello","day",["one","two"]]]

each_list(new_list)