看板 Python 關於我們 聯絡資訊
movies = ["a1","a2","a3",["b1","b2",["c1"]]] for a in movies: if isinstance(a, list): for b in a: print(b) else: print(a) 小弟不才請教一下 a1 a2 a3 b1 b2 ['c1'] 為什麼,會印出a1,a2,a3......這種個別單一資料 到了['c1'] 卻變成完整的 清單內容 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.255.80 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1436345197.A.153.html
mihonisizumi: 因為你的 isinstance 判斷只有套用在 movies 07/08 17:01
mihonisizumi: 而 movies 裡面的 list 你沒有再做這個判斷 07/08 17:01
kobe770205: 但為什麼到了c3就變成完整式了 07/08 18:42
LiloHuang: 因為 ['c1'] 在第二層迴圈時,你沒有第三層迴圈去印它 07/08 19:15
LiloHuang: 不考慮 stack 會炸掉,這個用遞迴簡單寫一下就可以了 07/08 19:15
LiloHuang: movies = ["a1","a2","a3",["b1","b2",["c1"]]] 07/08 19:15
LiloHuang: def foobar(m): 07/08 19:15
LiloHuang: for i in m: 07/08 19:15
LiloHuang: if isinstance(i, list): foobar(i) 07/08 19:16
LiloHuang: else: print i 07/08 19:16
LiloHuang: foobar(movies) 07/08 19:16