这是最简单的情况:
该程序应首先计算列表的平均值,然后计算2和3的平均值,之后应计算总平均值。
input [2,3,[4,6]]
该程序应首先计算列表的平均值,然后计算2和3的平均值,之后应计算总平均值。
input [2,3,[4,6]]
一个简单的实现支持嵌套列表,不需要任何特定的库,并且可以在任何Python版本中使用:
最初的回答:
def nested_avg(elements):
try:
seq = iter(elements)
except TypeError:
return elements
s = 0
while True:
try:
el = next(seq)
except StopIteration:
return s / len(elements)
s += nested_avg(el)
l1=[2,3,[4,6]]
print(int(nested_avg(l1)))
l2=[2,3,[4,[5,7]]]
print(int(nested_avg(l2)))
l1和l2输入都产生相同的结果,即3
注意:该代码未涵盖所有可能的输入数据检查,需要您将其准备好进行生产:D
原始答案: "最初的回答"
//
操作符?我担心随着子列表的深入,结果会变得越来越错误。实际上,你正在对所有中间答案进行四舍五入,这意味着答案将开始偏离。我错了吗? - palivek