|
第七天
1.主题:利用廖雪峰python博客强化之高级特性—lesson2
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431756044276a15558a759ec43de8e30eb0ed169fb11000
2.摘要
使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。
因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。
默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:(注意,Iterable开头要大写)
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,还可以使用两层循环,可以生成全排列,还可以加上if判断。
这种一边循环一边计算的机制,称为生成器:generator。创建L和g的区别仅在于最外层的[]和(),L是一个list,而g是一个generator。可以通过next()函数获得generator的下一个返回值,或通过for循环来迭代它。
3.心得感悟
在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。
1行代码能实现的功能,决不写5行代码。请始终牢记,代码越少,开发效率越高。
切片技术是对循环窃取技术的简化与替代。
任何可迭代对象都可以作用于for循环,但必须判断对象的可迭代与否;
凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
Python的for循环本质上就是通过不断调用next()函数实现的;
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。==函数是化繁为简、化整为零的思维减法;
把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。==functional progaramming 即使函数中嵌套函数;
自己的感悟越来越多啦~~~
4.时间统计
昨日阅读5小时,累计140小时
|