[問題] for 迴圈的用法

作者: kobe770205 (joseph)   2015-07-08 16:46:34
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'] 卻變成完整的 清單內容
作者: mihonisizumi (中原岬マジ天使)   2015-07-08 17:01:00
因為你的 isinstance 判斷只有套用在 movies而 movies 裡面的 list 你沒有再做這個判斷
作者: kobe770205 (joseph)   2015-07-08 18:42:00
但為什麼到了c3就變成完整式了
作者: LiloHuang (十年一刻)   2015-07-08 19:15:00
因為 ['c1'] 在第二層迴圈時,你沒有第三層迴圈去印它不考慮 stack 會炸掉,這個用遞迴簡單寫一下就可以了movies = ["a1","a2","a3",["b1","b2",["c1"]]]def foobar(m):for i in m:if isinstance(i, list): foobar(i)else: print ifoobar(movies)

Links booklink

Contact Us: admin [ a t ] ucptt.com