[英]I don't understand that part of code about recursive (python)
我不了解遞歸部分。
def length(list1):
if list1 == [] or list1 == "":
return 0
else:
return 1+length(list1[1:])
a = [1,2,3,4,5]
print "Length of list is: ",length(a)
這是代碼。 該代碼的作用類似於len函數。 output is for a; 5
output is for a; 5
但返回1+length(list1[1:])
,那部分對我來說是無法理解的。 為什么有"1"
? 為什么以1開頭? 為什么不為"0"
? 我以為是length(list1[0:])
但是沒有運行。 實際上,我認為,但是,我對該部分一無所知。
誰能解釋?
列表的長度可以遞歸定義為:
[]
) 在此, list1[1:]
是一個類似於list1
的新列表,但沒有第一個元素。
如果我們使用列表['a', 'b', 'c']
的具體示例:
['a', 'b', 'c']
與空白列表[]
,然后我們返回1 + length(['b', 'c'])
。 ['b', 'c']
與空列表[]
,然后length(['b', 'c'])
返回1 + length(['c'])
; 依此類推,直到length([])
被調用。
在python中:a [1:]的意思是“取一個從1開始的所有值,所以不包括0”,例如:
"abc"[1:] == "bc"
[2, 3, 4][1:] == [3, 4]
您正在查看的函數將獲取列表或字符串,然后刪除一個項目並計算剩余的項目,直到找到一個空項目為止,在這種情況下,該函數返回其長度(0)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.