[英]List function acting unexpectedly
def print_list(l):
for item in l:
if isinstance(item, list):
print_list(item)
else:
print(item)
我已經編寫了此函數,該函數使用遞歸來正確打印列表,但是我的問題是當我給它一個像[[1, 2, 3], 4]
類的參數時[[1, 2, 3], 4]
它應該在顯示3
后終止,但仍然可以正確顯示這四個價值觀是什么原因,有人可以啟發我。
我認為您誤解了遞歸。
外部列表具有兩項,一項是列表,一項是數字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)
當我嘗試您的功能時,我得到
1
2
3
4
作為輸出。 這正是您所期望的,因為您的函數首先進入遞歸,並在[1, 2, 3]
循環。 打印1
到3
。 然后,遞歸完成,返回到原始調用,該調用將在外部列表中打印第二個元素,即4
。
您為什么期望程序在三點終止? 如果您說遞歸停止時輸出的是數字三,那么您是對的,但是此時原始列表仍未完全處理。 如果記下程序的步驟,則可能顯示如下:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.