簡體   English   中英

我不了解有關遞歸(Python)的那部分代碼

[英]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:])但是沒有運行。 實際上,我認為,但是,我對該部分一無所知。

誰能解釋?

列表的長度可以遞歸定義為:

  • 如果列表為空,則為0(等於空列表[]
  • 1 +刪除列表第一個元素的長度。 (例如,如果您的列表包含3個元素,則長度等於1 +不包含元素(2)之一的相同列表的長度)

在此, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM