【发布时间】:2015-01-08 17:27:36
【问题描述】:
该函数接受一个列表并返回一个 int,具体取决于列表中有多少个列表,不包括列表本身。 (为简单起见,我们可以假设所有内容都是整数或列表。)
例如:
x=[1,2,[[[]]],[[]],3,4,[1,2,3,4,[[]] ] ]
count_list(x) # would return 8
我认为使用递归会有所帮助,但我不确定如何实现它,这是我目前所拥有的。
def count_list(a,count=None, i=None):
if count==None and i==None:
count=0
i=0
if i>len(a)
return(count)
if a[i]==list
i+=1
count+=1
return(count_list(a[i][i],count))
else:
i+=1
return(count_list(a[i]))
【问题讨论】:
-
一个明显错误的答案怎么样?
str(x).count("[") - 1 -
只要任何列表中都没有字符串,该解决方案可能不会比递归更糟糕。如果任何列表中有字符串,那么您可能有一个包含
"["的字符串,这会破坏一切。 -
在
def行上,应该有单等号而不是双等号。
标签: python list python-3.x recursion