第6章-3 列表或元组的数字元素求和 (20 分)

致读者:本人是一名通信专业学生,仅学了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())))

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值