我不理解递归部分。
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
但是返回1+length(list1[1:])
那部分对我来说是不可理解的。
为什么有"1"
?为什么它从1开始?为什么不"0"
?
我想length(list1[0:])
但它没有运行。
实际上我想,但是,我对这一部分一无所知。
任何人都可以解释一下吗?
答案 0 :(得分:2)
列表的长度可以递归地定义为:
[]
)此处,list1[1:]
是一个类似于list1
的新列表,但没有第一个元素。
如果我们采用列表['a', 'b', 'c']
:
['a', 'b', 'c']
与空列表[]
不同,然后我们返回1 + length(['b', 'c'])
。 ['b', 'c']
与空列表[]
不同,然后length(['b', 'c'])
返回1 + length(['c'])
;等等,直到length([])
被调用。
答案 1 :(得分:1)
在python中:a [1:]表示"取从1开始的所有值,所以排除0和#34;,例如:
"abc"[1:] == "bc"
[2, 3, 4][1:] == [3, 4]
您正在查看的函数采用列表或字符串,然后删除项目并计算剩余项目直到找到空项目,在这种情况下返回其长度(0)。