例如,我的列表=[1,[2,[3,[5,[5]]]]]]得到的列表是[1,3]。你知道吗
我现在有这个
def avg(mylist):
if mylist == []:
return mylist
elif type(mylist[0]) == list:
mylist[0] = 0 # average of mylist[0]
return mylist[:1]+avg(mylist[1:])
elif type(mylist[0]) == float:
return mylist[:1]+avg(mylist[1:])
这也是我想要的方式,但是我找不到一种方法来设置mylist[0]=mylist[0]的平均值。我也尝试过很多不同的方法,但我找不到一个有效的。你知道吗
编辑:我尝试过的另一个例子。你知道吗
total = 0
nosublist=True
if mylist == []:
return mylist
for x in mylist:
if type(x) == list:
nosublist=False
if nosublist:
return mylist[:1]+average(mylist[1:])
elif not nosublist:
for x in mylist:
if type(x) == list:
total += average(x)
else:
total += x
mylist[0] = total/len(mylist)
return average(mylist[:1])+average(mylist[1:])
现在你可以说
或者
编辑:
如果您真的只需要一个函数:
这可能不是最好的解决方案,但你可以用它来帮助你的更好!我在每个递归调用上创建了两个列表,一个只包含非列表的元素,另一个包含所有列表的元素(以防您使用类似
[1, 3, [2], [2], [3, [5, [5, 5]]]]
的格式),并创建了一个调用堆栈来获取每个内部数组中元素的总和,另一个用于获取每个内部数组的长度,然后获取平均值。当然,由于数组列表中可能有多个数组,因此可以为每个数组映射相同的功能并累积它们的平均值代码
结果
相关问题 更多 >
编程相关推荐