PTA - 嵌套列表求和

使用递归函数对嵌套列表求和

函数接口定义:

def sumtree(L)

L是输入的嵌套列表。

裁判测试程序样例:

/* 请在这里填写答案 */L = eval(input())
print(sumtree(L))  # 调用函数

输入样例:

在这里给出一组输入。例如:

[1,[2,[3,4],5],6,[7,8]]

输出样例:

在这里给出相应的输出。例如:

36

我的答案:

方法一:
def sumtree(L):#global total        #为什么这里不用global也可以输出正确答案?total = 0for i in L:if (type(i) != list):total += ielse:total += sumtree(i)return total"""
原因:函数内部的局部变量: total 在 sumtree 函数内部被定义,它是一个局部变量。这意味着它只在函数内部有效,不会影响外部的任何变量。
递归调用: 当函数递归调用自身时,它会创建一个新的局部作用域。因此,每一次递归调用都会创建新的 total 变量,这些变量之间互不影响。
返回值: 递归调用 sumtree(i) 后,它会返回子列表的总和,并且这个返回值会被加到当前函数的 total 上。最终,函数返回最外层 total 的值
"""

 

方法二:
total = 0def sumtree(L):global total  # 声明 total 为全局变量for i in L:if (type(i) != list):total += ielse:sumtree(i)return total

 

方法三:
def sumtree(L):total = 0for element in L:if isinstance(element, list):total += sumtree(element)  # 递归调用else:total += elementreturn total

 

方法四:
def sumtree(L):total = 0stack = [L]  # 创建一个栈来存储待处理的列表while stack:current = stack.pop()  # 从栈顶取出一个列表for element in current:if isinstance(element, list):stack.append(element)  # 将子列表压入栈else:total += elementreturn total

测试结果:

这里不一一列举了,只列出部分提交结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/47066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

邮件飞鸿:深入解析Laravel的邮件系统

邮件飞鸿:深入解析Laravel的邮件系统 在现代Web应用中,邮件服务是与用户交互的重要方式之一。Laravel,作为PHP界的流行框架,提供了一个强大而灵活的邮件系统。本文将深入探讨Laravel的邮件系统如何工作,并通过代码示例…

轻断食1.0.1-july 16th 冥想1.1.1

自己昨天晚上吃了豆皮以后,自己感觉自己还是很饿,然后随即自己又吃了一些东西(其实自己可以控制的,但是没有办法,你不知道那种感觉:有一只该死的蚊子,老在自己的耳朵旁边嗡嗡乱飞。)…

Python中的sorted()与list.sort():深入解析它们的效率差异

目录 Python中的sorted()与list.sort():深入解析它们的效率差异内部实现与原理sorted()list.sort() 性能与内存使用内存消耗执行速度适用场景sorted()list.sort() 实例对比结论 Python中的sorted()与list.sort():深入解析它们的效率差异 在Python编程中…

【Vue随笔】Vue中watch的不同写法

【写在前面】在实际开发中,我们要监听的属性可能是对象中的某个属性,除了对整个对象进行监听以外,我们可以用单引号包裹的形式监听对象中的某个属性。 watch: {searchFormModel.appKey: function (newVal) {if (newVal.includes(全部)) {if (…

昇思25天学习打卡营第23天|基于MindSpore的GPT2文本摘要

这节课主要学习基于MindSpore的GPT2文本摘要。主要包括环境安装、数据集加载与处理、模型构建、模型训练、模型推理五部分内容。 1.首先介绍环境安装 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面…

go 编译ollama的时候报错:open /dev/null: no such file or directory

go 编译ollama的时候报错:open /dev/null: no such file or directory github.com/xtgo/set: /root/work/go/pkg/tool/linux_amd64/compile: open /dev/null: no such file or directory gonum.org/v1/gonum/blas/gonum: /root/work/go/pkg/tool/linux_amd64/compi…

Spark中的JOIN机制

Spark中的JOIN机制 1、Hash Join概述2、影响JOIN的因素3、Spark中的JOIN策略3.1、Shuffle Hash Join3.2、Broadcast Hash Join3.3、Sort Merge Join3.4、Cartesian Product Join2.5、Broadcast Nested Loop Join1、Hash Join概述 Apache Spark共提供了五种JOIN机制,其中常用的…

Laravel Horizon:任务队列的智能指挥官

Laravel Horizon:任务队列的智能指挥官 在现代Web应用中,处理耗时的任务通常需要异步执行,以避免阻塞主线程和影响用户体验。Laravel的Horizon任务系统是一个强大的后台工作管理器,它不仅优化了队列任务的处理,还提供…

【论文阅读】MCTformer+:弱监督语义分割的多类令牌转换器

【论文阅读】MCTformer:弱监督语义分割的多类令牌转换器 文章目录 【论文阅读】MCTformer:弱监督语义分割的多类令牌转换器一、介绍1.1 WSSS背景1.2 WSSS策略 二、联系工作2.1 弱监督语义分割2.2 transformers的可视化应用 三、MULTI-CLASS TOKEN TRANSFORMER3.1 Multi-class t…

读人工智能全传15意向立场

1. 物理立场 1.1. 可以解释一个实体行为 1.2. 在物理立场中,我们使用自然法则(物理、化学等)来预测系统的行为结果 1.3. 虽然物理立场在解释这种行为的时候非常有效,但无法应用于理解或者预测人类行为 1.3.1. …

java基础学习:序列化之 - hessian2

文章目录 一、介绍二、主要特点三、应用场景四、使用方式五、与其他序列化协议的比较六、总结 一、介绍 Hessian2是Hessian协议的一个更新版本,由Caucho Technology公司开发。Hessian是一种基于二进制的轻量级、高效的跨语言序列化协议。Hessian2相较于原始Hessian…

迭代器+反向迭代器

接上节内容&#xff0c;反向迭代器&#xff08;aoto的价值显示的更明显&#xff09; int main() {string s1("hello world");//string::reverse_iterator rit s1.rbegin();auto rit s1.rbegin();while (rit ! s1.rend()){(*rit) 3;cout << *rit << &…

解决 Vscode不支持c++11的语法

问题&#xff1a; 解决方案&#xff1a; 1、按 CtrlShiftP 调出命令面板&#xff0c;输入 C/C: Edit Configurations (UI) 并选择它。这将打开 C/C 配置界面 2、打开 c_cpp_properties.json 文件 3、编辑 c_cpp_properties.json 4、保存 c_cpp_properties.json 文件。 关闭并…

软设之模板方法模式

设计模式中模板方法模式的意图是:定义一个操作中的算法骨架&#xff0c;而将一些步骤延迟到子类中&#xff0c;使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤。 打个比方&#xff0c;比如要制作蛋糕&#xff0c;有准备材料&#xff0c;搅拌材料&#xff0c…

防火墙---带宽管理

防火墙的带宽管理&#xff1a;是指对防火墙设备的带宽进行管理和控制&#xff0c;以确保网络流量的合理分配和优化网络性能 带宽管理&#xff1a;是指限制网络流量的速率或控制网络流量的优先级&#xff0c;以确保网络的性能和可用性 核心&#xff1a; 带宽限制&#xff1a;…

在ArcGIS Pro中新建空图层的最快方法

01常规方法 一般情况下&#xff0c;如果我们想新建一个要素图层&#xff0c;常规方法是&#xff1a; 在目录框中&#xff0c;找一个gdb数据库&#xff0c;右键——新建——要素类&#xff1a; 设置好各种属性&#xff1a; 创建结果如下&#xff1a; 最后将要素类拖入地图中即…

Android 音频通道切换HDMI,蓝牙,喇叭

Android 音频通道切换HDMI,蓝牙,喇叭 private void speakerSound() {if (soundOutput.equals("speaker")) {return;}soundOutput "speaker";audoManager (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);audoManager.setMode(AudioMa…

GPU租赁教程/云主机使用教程/在线GPU环境部署/免费GPU/免费算力||运用云服务器,跑自己的深度学习模型(保姆级教程)

一、环境准备 pycharm professional&#xff08;需要pycharm专业版&#xff0c;社区版不行&#xff09;潞晨云账号访问链接&#xff0c;目前应该是最便宜的GPU租赁平台了&#xff0c;不知道之后会不会涨价&#xff0c;点我链接注册送10元代金券&#xff0c;能跑6个小时的4090w…

Java中的类加载机制详解

Java中的类加载机制详解 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 类加载机制概述 在Java中&#xff0c;类加载机制是Java虚拟机&#xff08;JVM&#xff09;运行时的重要组成部分&#x…

python-基础篇-运算符

文章目录 六、运算符相关的魔术方法1、比较运算符2、算术运算符 六、运算符相关的魔术方法 1、比较运算符 魔术方法说明__cmp__(self, other)如果该方法返回负数&#xff0c;说明 self < other; 返回正数&#xff0c;说明 self > other; 返回 0 说明 self other 。强烈…