def print_list(l):
for item in l:
if isinstance(item, list):
print_list(item)
else:
print(item)
我寫了這個功能,使用遞歸正常打印的清單,但我的問題是,當我把它根據我顯示3
後應終止像[[1, 2, 3], 4]
的說法,但它仍能正常顯示所有4個值都是什麼原因,有人可以啓發我。列表功能的演技意外
def print_list(l):
for item in l:
if isinstance(item, list):
print_list(item)
else:
print(item)
我寫了這個功能,使用遞歸正常打印的清單,但我的問題是,當我把它根據我顯示3
後應終止像[[1, 2, 3], 4]
的說法,但它仍能正常顯示所有4個值都是什麼原因,有人可以啓發我。列表功能的演技意外
我想你誤解了遞歸。
外列表有兩個項,一個列表,以及一個數4. print_list()
函數調用print_list()
再次打印的內部列表,然後調用print(4)
爲第二元件。
所以,這是發生了什麼:
print_list([[1, 2, 3], 4])
- >環比2項
print_list([1, 2, 3])
- >循環超過3項
print(1)
print(2)
print(3)
print(4)
哦,我明白了... – user2189524
當我嘗試你的函數,我得到
1
2
3
4
作爲輸出。這正是你所期望的,因爲你的函數首先進入遞歸,循環遍歷[1, 2, 3]
。這打印1
到3
。然後,遞歸結束,返回到原始調用,即打印外部列表中的第二個元素,即4
。
你爲什麼期望程序終止於三? 如果您說遞歸停止並且打印輸出爲三,但此時還沒有完全處理原始列表,那麼您是對的。如果你寫下你的程序的步驟,它可以這樣寫:
注意類型檢查像這樣的是一個壞主意,因爲這將意味着它不會與其他iterables,這使你的函數小靈活的工作。 –
您需要查看['pprint'](http://docs.python.org/2/library/pprint.html)模塊。 –