python學習筆記--列印巢狀list中每個資料(遍歷列表)
阿新 • • 發佈:2019-02-17
遍歷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)