我需要编写一个获取列表结构并接收其大小的函数(大小)。大小是对括号的数量和列表结构中的整数。 例如:size([[[14],[23,[14]]]])= 8(5对括号,3个整数)
我写了一个代码但是我找不到每次调用递归时cnt都不会赋值为零的方法。 这是我的代码:
def flatten(lst):
if type(lst)==int:
return [lst]
elif lst==[]:
return []
else:
return sum(([x] if not isinstance(x, list) else flatten(x) for x in lst),[])
def size(lst):
cnt=0
if lst== []:
return 1
if type(lst)== int:
return 1
b= str(lst)
ind= b.find('[')
while ind!=-1:
cnt+=1
lst=lst[ind+1:]
return cnt+ size(lst)
return cnt+ len(flatten(lst))
答案 0 :(得分:2)
你可以做一些更简单的事情,比如:
def size(lst):
if type(lst) == int:
return 1
else:
return 1 + sum(size(e) for e in lst)
print size([[[14],[23,[14]]]])