当前位置: 首页 > news >正文

python怎么除去列表l中所有是x的元素_Python学习教程(Python学习路线):Python3之递归函数简单示例...

Python学习教程(Python学习路线):Python3之递归函数简单示例

f9b0050817c44a5680745fed9e851c9c

概述

递归函数即直接或间接调用自身的函数,且递归过程中必须有一个明确的递归结束条件,称为递归出口。递归极其强大一点就是能够遍历任意的,不可预知的程序的结构,比如遍历复杂的嵌套列表。

递归求和

我们可以利用递归函数实现一个Python内置函数sum()的递归版。

# 递归def d_sum(L): if not L: return 0 else: return L[0] + d_sum(L[1:])sum_l = d_sum(range(10))print(sum_l)

示例结果

45

该递归函数怎么实现列表元素相加的呢? 我们知道函数是有本地作用域的,对函数调用的每一个打开的时候,在运行时调用堆栈上都有自己的一个本地作用域的副本,即L在每个层级都是不同的,比如我们可以通过每次调用时添加一个打印语句,更加直观展示每个层级L的情况

# 递归def d_sum(L): # 打印该层级L print(L) if not L: return 0 else: return L[0] + d_sum(L[1:])# 构建 0-10 数字元素列表L = [i for i in range(10)]sum_l = d_sum(L)print(sum_l)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9][1, 2, 3, 4, 5, 6, 7, 8, 9][2, 3, 4, 5, 6, 7, 8, 9][3, 4, 5, 6, 7, 8, 9][4, 5, 6, 7, 8, 9][5, 6, 7, 8, 9][6, 7, 8, 9][7, 8, 9][8, 9][9][]45

处理任意结构

比如我们可以利用递归计算一个嵌套的子列表结构中所有数字的总和

def dd_sum(L): tot = 0 for x in L: if not isinstance(x, list): tot += x else: tot += dd_sum(x) return tot# 嵌套列表L = [1,[2,3],[4,[5,6,7],8],9]sum_l = dd_sum(L)print(sum_l)

示例结果:

45

这种处理方式看似复杂,我们可能更多会利用循环语句替代,但是使用递归函数逻辑简单清晰,这是使用的一大优点。

更多的Python学习教程和Python学习路线会继续为大家分享!

相关文章:

  • Windows phone 7 Series发布!
  • json_extract提取复杂json_4个小窍门,让你在Python中高效使用JSON
  • 关于Windows phone 7 series开发方面的传言
  • centos找不到apt-get命令_Centos 使用 pyinstaller 打包踩坑分享
  • python cv2 imshow_Python-OpenCV 2. 图像基本操作
  • wild magic3 渲染状态更新和scene绘制
  • 跨域获取后台数据undefined_拨号跨域问题
  • 软件文档归类汇总
  • java aes加密_行走江湖,安全第一 | 尚硅谷Java安全密码学教程发布!
  • 今天是最后的悠闲。
  • kernel编译 openwrt_OpenWRT实践3:Click Modular Router
  • 关于Mercurial(Hg)
  • python异常处理机制_错误处理
  • 十进制浮点数的表示方法
  • python工作可以做什么菜_python3 特色菜
  • Apache的80端口被占用以及访问时报错403
  • Asm.js的简单介绍
  • C++类中的特殊成员函数
  • extract-text-webpack-plugin用法
  • Javascript基础之Array数组API
  • JS+CSS实现数字滚动
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • ng6--错误信息小结(持续更新)
  • Python学习之路16-使用API
  • React组件设计模式(一)
  • vue-router的history模式发布配置
  • Webpack 4x 之路 ( 四 )
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 爬虫模拟登陆 SegmentFault
  • 深入浅出Node.js
  • 时间复杂度与空间复杂度分析
  • 微服务入门【系列视频课程】
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • ​Linux·i2c驱动架构​
  • ​人工智能书单(数学基础篇)
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #、%和$符号在OGNL表达式中经常出现
  • #pragma multi_compile #pragma shader_feature
  • #QT(智能家居界面-界面切换)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (多级缓存)多级缓存
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (十)c52学习之旅-定时器实验
  • (五)c52学习之旅-静态数码管
  • .NET 8.0 发布到 IIS
  • .net 设置默认首页
  • .NET 指南:抽象化实现的基类
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET的微型Web框架 Nancy
  • .net反编译的九款神器