自己目前在读两本python中的书,采取双循环的模式。读完一本,接着读另一本, 同时开始补充自己的书。
Head First Python
知识点: 列表
列表是一个对象,可有子列表,可有元组,可有字典。
for循环
for循环, 通常来解决迭代问题。
递归:
用简单的方法,解决和尚讲故事的问题
Python -V 大写v
stance: 态度,立场,英文解释。 instance例子
内置命令。
isinstance (object,class-or-type-or-tuple) 返回bool
补充知识点: 1:如何查看isinstance的帮助------help(isinstance)
3: idle输入is, 按table,直接按空格确认命令后, 不需要退格,直接输入就可以
代码:
__author__ = 'lixiang'
name = ['恐怖邮轮',['沉默羔羊','红龙','少年汉尼拔']]
for each_item in name:
if isinstance(each_item,list):
for next_item in each_item:
print(next_item)
else:
print(each_item)
接下来,有个问题, 如果有第三个, 第四个子列表应该怎么办?
书中的思路, 继续分析代码。
外面for: 处理外围列表。
里面for: 处理内部列表。
那应该怎么办呢?
以下是我的第一次代码:
__author__ = 'lixiang'
name = ['恐怖邮轮',['沉默羔羊','红龙',['少年汉尼拔1',['测试','测试2']]]]
def printlist(item):
if isinstance(item,list):
for next in item:
print(next)
else:
print(item)
for each_item in name:
if isinstance(each_item,list):
for next_item in each_item:
printlist(next_item)
else:
print(each_item)
但是第一个发现, 自己这样做, 只是让程序分开了, 没有让程序更加简单, 也没有做到嵌套,没有解决问题。。
大致看了看书, 书中说的是递归。
到底是什么是递归呢?
“从前有座山,山里有个老和尚,老和尚给小和尚讲故事,从前有座山...”
突然方丈出现,故事讲完了,如果方丈不出现,那就一直出现
方丈做了什么,故事就完了呢?这个就要问你了……
落实解释问题, 就是函数是来解决外部输入简单,递归是用来解决内部调用。 看看这个代码怎么写。
def stroy():
print ("从前有座山")
print("山里有个故事")
print("老和尚和小和尚讲故事")
stroy()
直接调用看看, 调用成功,但是发现调用次数有限,书中说深度不超过100. 回到习题中呢。
__author__ = 'lixiang'
name = ['恐怖邮轮',['沉默羔羊','红龙',['少年汉尼拔1',['测试','测试2']]]]
def printlist(list_name):
for each_item in list_name:
if isinstance(each_item,list):
printlist(each_item)
else:
print(each_item)
printlist(name)
看到了吗? 很简单, 其实 递归 用来解刨列表, print(each_item) 用来打印。
在想想,为什么需要函数, 解决递归调用, 没这个,没法递归。 还有 就是 计算机编程是人机交互的, 如果你做的程序,就自己能写,还要求别人都懂,是不是太麻烦了, 不如给一个这样的函数,让人家直接用。
printlist(name)
这也是为什么要学习python的原因吧, 调用别人的函数。
想到之前在learn python the hard way , sudo pip install... , 不就是这个作用吗?