問題:讀取movies = ['a','b',['c','d',['f','g','h']]]里的每個字符串
方法:利用isinstance、for和if...else讀取列表里的字符串。
具體步驟:
z =0
k = 0
q = 0
movies = ['a','b',['c','d',['f','g','h']]]
for each_item in movies:
if isinstance(each_item,list)==False:
print(each_item)
z = z +1
else:
for p in each_item:
if isinstance(p,list)==False:
print(movies[z][k])
k = k+1
else:
for s in p:
print(movies[z][k][q])
q=q+1
結(jié)果:
可是解決問題
存在問題:
如果嵌套級別太多,就要重復使用for和if...else,不斷增加變量。
進一步優(yōu)化:
movies = ['a','b',['c','d',['f','g','h']]]
for each_item in movies:
if isinstance(each_item,list):
for nested_item in each_item:
if (nested_item, list) == False:
print(nested_item)
else:
for f in nested_item:
print(f)
else:
print(each_item)
或者
movies = ['a','b',['c','d',['f','g','h']]]
for each_item in movies:
if isinstance(each_item,list):
for nested_item in each_item:
if isinstance(nested_item, list) :
for deeper_item in nested_item:
print(deeper_item)
else:
print(nested_item)
else:
print(each_item)
總結(jié):代碼更少,清晰,但還存在一個問題:如果有更多的嵌套,該如何解決。
比如說movies = ['a','b',['c','d',['f','g','h',['o']]]]
使用函數(shù),繼續(xù)優(yōu)化形成最終大法:
movies = ['a','b',['c','d',['f','g','h',['o']]]]
def item (name):
for each_item in name:
if isinstance(each_item,list):
item(each_item)
else:
print(each_item)
print(item(movies))
這樣,再也不怕嵌套的級別了。
問題解決方法參考了《Head First Python(中文版)》