![](/img/trans.png)
[英]Python Sum of all subset of list using list comprehension and recursion
[英]Unable to debug sum of a list using recursion in Python
def sumList(arr):
items = len(arr)
if(items == 0):
return 0
elif(items == 1):
return arr[0]
else:
return(arr[0] + sumList(arr[1:]))
print(sumList([2, 4, 6, 10, 123]))
如果將“ else if”部分注釋掉,該代碼仍將運行。 但是,應該不是最后else
給一個錯誤的最后一種情況下,當只有一個項目存在,因為它是從返回索引1,不存在首發名單?
切片永遠不會給出索引超出范圍的錯誤。 例如:
mylist = [1, 2, 3]
print(mylist[10000:])
# []
讓我們澄清一個問題:您似乎在問為什么這段代碼:
def sumList(array):
items = len(array)
if items == 0:
return 0
if items == 1:
return array[0]
return array[0] + sumList(array[1:])
如果/當我們刪除第二個條件表達式時仍然有效:
def sumList(array):
items = len(array)
if items == 0:
return 0
#if items == 1:
# return array[0]
return array[0] + sumList(array[1:])
@ Tomothy32提供的答案告訴我們,最后一行最終將變為:
return array[0] + sumList([])
由於您的第一個條件表達式,它變為:
return array[0] + 0
在Python 3中,我們可以簡單地表達為:
def sumList(array):
if not array: # empty containers are false in boolean context
return 0
head, *tail = array # Python 2: head, tail = array[0], array[1:]
return head + sumList(tail)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.