呵呵,本节主要简单的讨论一下用for来实现递归操作。

先看一下本节设计的小程序要求,有这样一个list:

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

用for循环打印结果是什么样的呢?

def p():for i in [1, 2, [3, 4], 5, 6, [7, 8, 9]]:print i
def main():p()
main()

运行结果为:

我们能有办法打印出下面的结果么?

也就是说遇到了子list列表也一项项输出。

要想实现上边的要求这里需要学习一个python内建(built-in)函数,isinstance(),先看看该函数的帮助好了

Help on built-in function isinstance in module __builtin__:isinstance(...)isinstance(object, class-or-type-or-tuple) -> boolReturn whether an object is an instance of a class or of a subclass thereof.With a type as second argument, return whether that is the object's type.The form using a tuple, isinstance(x, (A, B, ...)), is a shortcut forisinstance(x, A) or isinstance(x, B) or ... (etc.).
(END)

如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。
有了isinstance函数的帮助,我们就可以实现上图程序的要求了。

def p():for i in [1, 2, [3, 4], 5, 6, [7, 8, 9]]:if isinstance(i, list):for j in i:print jelse:print i
def main():p()main()

程序第2行的for循环会分6次将数据依次取出赋值给i变量,当i = [3, 4]的时候,第3行代码会判断此时的i是否是list类型?结果为真,则执行第4~5这嵌套的for循环,第4~5行的for循环会2 次从[3, 4]里取出数据赋值给j变量,这样[3, 4]被分别打印出来了,而[3, 4]前边的1和2不满足第3行的if条件判断则去执行print i打印语句了。第2行的list里后边的5和6也是不满足第3行的判断条件而被直接打印输出,当第2行的for循环遇到[7, 8, 9]时也是先赋值给i,第3行判断出了此时的i是list类型数据,从而又执行了第4~5行的for循环体,因此7,8,9三个数也能一一打印出来。程序运行结果如下图所示。

现留一个问题思考一下:如果list里有n层的list嵌套,该如何实现呢?用递归!我研究出来了!呵呵!

[1, 2, 4, [5, [6,[7,8],[9,10,[[11],1],2,4]]]]

n未知,该如何是好?

Python学习入门基础教程(learning Python)--4.2.3 Python的for实现递归,(0629学习笔记)我研究出来了!...相关推荐

  1. Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级

    前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问 ...

  2. Python学习入门基础教程(learning Python)--6.3 Python的list切片高级

    上节"6.2 Python的list访问索引和切片"主要学习了Python下的List的访问技术:索引和切片的基础知识,这节将就List的索引index和切片Slice知识点做进一 ...

  3. Python学习入门基础教程(learning Python)--2.3.5Python返回多个值问题

    本节主要学习Python的函数是如何同时返回多个值的问题. 在学习Python的时候惊奇的发现,Python的函数可以同时返回多个值,很有意思. [python]view plaincopy #def ...

  4. Python学习入门基础教程(learning Python)--1.4 Python数据处理基础 .

    本节主要讨论数据操作及运算符等基础知识,熟悉C语言相关知识的读者请跳过此节. 在高级语言编程过程中,有了数据以后通常要对数据进行相应的数据处理,加.减.乘.除等基本运算,不难理解. 在Python里 ...

  5. Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式

    在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识.逻辑关 ...

  6. Python学习入门基础教程(learning Python)--5.3 Python写文件基础

    前边我们学习了一下Python下如何读取一个文件的基本操作,学会了read和readline两个函数,本节我们学习一下Python下写文件的基本操作方法. 这里仍然是举例来说明如何写文件.例子的功能是 ...

  7. Python学习入门基础教程(learning Python)--5.5 Python写操作详解

    在前文5.3节我们简单的学习了如何在Python里进行文件的写操作,所举例里写入的都是字符串数据,那我们现在想写入数值型数据可以直接写入么?我们先看看下边的程序是否能正常运行? wfile = ope ...

  8. Python学习入门基础教程(learning Python)--5.4 Python读文件详解

    问题1.多余的'\n' 在5.2节里我们基本掌握了Python下的文件读文件操作基本方法,但是也存在一些小小问题,细心的读者会发现下面这幅图的问题. 上图每次打印输出words时,先打印了一行从文件里 ...

  9. Python学习入门基础教程(learning Python)--4.3 Python的for嵌套

    Python下的循环体和其他高级语言一样循环体也是可以嵌套的! 我们做个小例子看看,从而结束本章的学习. 任务:打印矩阵下三角 BASE_SIZE = 8for r in range(BASE_SIZ ...

最新文章

  1. SQL Server基础操作(此随笔仅作为本人学习进度记录七 !--存储过程)
  2. 活久见!64 张图带你 Maven 实战通关
  3. hihocoder 1490 Tree Restoration
  4. 图形旋转的C语言源程序
  5. 解析Spring IOC原理——工厂模式与反射机制的综合应用
  6. Windows 2012 R2 中 AD DS 部署
  7. PHP执行批量mysql语句
  8. MySQL 常用运算符
  9. JavaFX UI控件教程(一)之简述
  10. HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP错误解决方法
  11. 【Vue.js 知识量化】Promise
  12. Oracle shutdown immediate无法关闭数据库解决方法
  13. 对课程第二次作业的补充与反馈
  14. android ndk怎样加载o文件_Android开发:JNI与NDK全面剖析与实战
  15. solidworks 2018 SP2.0中文版
  16. 苹果手机没声音了显示耳机模式_Airpods Pro 安卓苹果双机体验
  17. AutoCAD2022下载安装教程
  18. 用学校邮箱使用微软OneDrive云存储空间5120G
  19. 无线通信蜂窝网络 的 覆盖范围
  20. X-Frame-Options

热门文章

  1. 字体选择_Word文档中的字体批量选择与更改,查找替换功能必杀技
  2. c3p0 服务启动获取连接超时_c3p0获取连接Connection后的Close()---释疑
  3. 大型网站技术架构(读书笔记)
  4. 培训笔记——2019年性能测试
  5. 从网络营销辞职转行软件测试,100天的心酸拿到9K,过程都是自己在苦撑,只因我...
  6. 在不同应用场景中,我们该如何进行测试呢?
  7. mysql count 与sum_Mysql下count()和sum()区别
  8. PAT甲级1009 多项式相乘
  9. 多线程占用修改同一excel文件冲突_漫谈Excel报表移动化的逐级解决方案
  10. php socket发数据打印,PHP向socket服务器收发数据的方法