致读者:本人是一名通信专业学生,仅学了4天Python ,难免有些地方写的很笨拙。
写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很多和自己一样处于困惑的读者。
水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!
越努力,越幸运
求列表中数字和,列表中嵌套层次不限2层
输入格式:
在一行中输入列表或元组
输出格式:
在一行中输出数字的和
输入样例:
在这里给出一组输入。例如:
[11,2,[3,7],(68,-1),“123”,9]
输出样例:
在这里给出相应的输出。例如:
99
解法1 递归函数
def list_app(old_list):
"""#isinstance去判断遍历的l是不是还是一个list如果还是list,用递归继续反复遍历"""
new_list = list()
for l in old_list:
if isinstance(l, (tuple, list)):
new_list.extend(list_app(l)) # 调用递归
else:
new_list.append(l)
return new_list
l = eval(input())
ans = list(filter(lambda x: isinstance(x, int), list_app(l)))
print(sum(ans))
解法2 递归函数+默认构造形参
def list_app(old_list, new_list=list()):
"""#isinstance去判断遍历的l是不是还是一个list如果还是list,用递归继续反复遍历"""
for l in old_list:
if isinstance(l, (tuple, list)):
list_app(l) # 调用递归
else:
# 如果不是,把l添加进一个新的list
new_list.append(l)
return new_list
l = eval(input())
ans = list(filter(lambda x: isinstance(x, int), list_app(l)))
print(sum(ans))
解法3 递归+直接处理
def list_app(l=list()):
res = 0
for i in l:
if isinstance(i, int):
res += i
elif isinstance(i, (list, tuple)):
res += list_app(i)
return res
print(list_app(eval(input())))